[SPRING] 모든 SpringBeans와 ApplicationContext가 초기화 된 후에 메소드 호출하기
SPRING모든 SpringBeans와 ApplicationContext가 초기화 된 후에 메소드 호출하기
Web ApplicationContext 및 SpringBeans가 초기화 된 직후에 호출되어야하는 복잡한 Java 프로그램에 메소드가 있습니다.
나는 주변에서 놀아 보려고 노력했다.
나는 이것을하는 방법을 아는 사람이 있는지 궁금 해서요.
고맙습니다.
해결법
-
==============================
1.ApplicationListener로 ContextRefreshedEvent를 잡을 수 있습니다.
ApplicationListener로 ContextRefreshedEvent를 잡을 수 있습니다.
-
==============================
2.Spring 4.2 이후에는 주석을 사용하여 Spring Lifecycle 이벤트 (및 자신의 이벤트)에 이벤트 리스너를 연결할 수 있습니다. 단순한 @EventListener를 메소드에 추가하고 첫 번째 (그리고 유일한) 매개 변수로 이벤트 유형을 포함 시키면 Spring은 자동으로 이벤트 유형을 감지하고 연결합니다.
Spring 4.2 이후에는 주석을 사용하여 Spring Lifecycle 이벤트 (및 자신의 이벤트)에 이벤트 리스너를 연결할 수 있습니다. 단순한 @EventListener를 메소드에 추가하고 첫 번째 (그리고 유일한) 매개 변수로 이벤트 유형을 포함 시키면 Spring은 자동으로 이벤트 유형을 감지하고 연결합니다.
https://spring.io/blog/2015/02/11/better-application-events-in-spring-framework-4-2
@Component public class MyListener { @EventListener public void handleContextRefresh(ContextRefreshedEvent event) { ... } }
-
==============================
3.이 목적으로 ApplicationListener
를 사용할 수 있습니다. 제네릭 형식 매개 변수에서는 ContextRefreshedEvent를 사용할 수 있습니다. ApplicationEvent에 대한 재정의 된 메소드에서 bean을 autowire하거나 서비스로 사용하거나 여기에서 다른 서비스를 호출하는 것과 같은 작업을 수행 할 수 있습니다. 그리고 @PostConstructor와는 다른 점에 주목하십시오. 이 목적으로 ApplicationListener
를 사용할 수 있습니다. 제네릭 형식 매개 변수에서는 ContextRefreshedEvent를 사용할 수 있습니다. ApplicationEvent에 대한 재정의 된 메소드에서 bean을 autowire하거나 서비스로 사용하거나 여기에서 다른 서비스를 호출하는 것과 같은 작업을 수행 할 수 있습니다. 그리고 @PostConstructor와는 다른 점에 주목하십시오. public class MyContextRefreshListener implements ApplicationListener<ContextRefreshedEvent> { @Override public void onApplicationEvent(ContextRefreshedEvent event) { //do what you want } }
-
==============================
4.해당 빈에 대한 액세스 권한이있는 사용자 정의 BeanFactoryPostProcessor를 추가 할 수 있습니다.
해당 빈에 대한 액세스 권한이있는 사용자 정의 BeanFactoryPostProcessor를 추가 할 수 있습니다.
from https://stackoverflow.com/questions/3409605/calling-a-method-after-all-springbeans-and-applicationcontext-have-been-initiali by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 한정자에 의해 ApplicationContext에서 빈을 얻는다. (0) | 2019.02.22 |
---|---|
[SPRING] 스프링 보안에서 세션을 활성화하고 세션 시간 제한을 설정하는 방법 (0) | 2019.02.22 |
[SPRING] Jetty의 Spring 애플리케이션에서 jsessionid 쿠키 경로를 서버 루트로 변경하는 방법은 무엇입니까? (0) | 2019.02.22 |
[SPRING] 스프링 부트를 만드는 방법은 세션 쿠키를 발행하지 않으십니까? (0) | 2019.02.22 |
[SPRING] ServletContext를 Autowire 할 수 없습니다. (0) | 2019.02.22 |