[Spring] 스프링 시작시점에서 프로그램 동작할 수 있게 하는 방법

스프링 시작시점에서 프로그램을 동작할 수 있도록 하는데에는 세가지가 있습니다.

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

댓글

Designed by JB FACTORY