[Spring] 스프링 시작시점에서 프로그램 동작할 수 있게 하는 방법
- BACKEND/Spring
- 2018. 11. 15. 11:42
스프링 시작시점에서 프로그램을 동작할 수 있도록 하는데에는 세가지가 있습니다.
1. CStartEventHandler 클래스를 제작하고 contextRefreshedEvent 메소드
2. ApplicationListener 인터페이스를 구현한 onApplicationEvent(ContextRefreshedEvent event) 메소드
3. ServletContextListener 인터페이스를 구현한 contextInitialized(ServletContextEvent arg0) 메소드
1번 코드
1 2 3 4 5 6 7 8 9 10 11 12 | @Component public class CStartEventHandler { private static final Logger logger = LoggerFactory.getLogger(CStartEventHandler.class); @EventListener({ContextRefreshedEvent.class}) public void contextRefreshedEvent() { logger.info("ContextStartedEvent Received"); } } | cs |
1번 코드의 경우에 두번 실행되니까 이것을 한번만 실행되게 할려면 Context 를 구분해주면 되는데 다음과 같이 조건문을 걸어주면 됩니다.
1 2 3 | if (e.getApplicationContext().equals(appContext)) { logger.info("========= appContext Only =========="); } | cs |
2번 코드
1 2 3 4 5 6 7 8 9 10 11 | @Component public class StartupApplication implements ApplicationListener<ContextRefreshedEvent> { private static final Logger logger = LoggerFactory.getLogger(StartupApplication.class); @Override public void onApplicationEvent(ContextRefreshedEvent event) { logger.info("onApplicationEvent start"); } } | cs |
3번 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class StartupApplication implements ServletContextListener { private static final Logger logger = LoggerFactory.getLogger(StartupApplication.class); @Override public void contextDestroyed(ServletContextEvent arg0) { } @Override public void contextInitialized(ServletContextEvent arg0) { logger.info("--------------- Context Initialized -----------------"); } } | cs |
'BACKEND > Spring' 카테고리의 다른 글
[Spring] 스프링 어노테이션 @PostConstruct, @PreDestroy 란 (0) | 2020.02.25 |
---|---|
Secure Coding (0) | 2018.03.05 |
테스트 (Test) (0) | 2018.02.12 |
Spring (0) | 2018.02.05 |
[Spring] Spring Security (0) | 2017.06.26 |