I have a method in a complex java program that needs to be called immediately after the web ApplicationContext and SpringBeans have been initialized.
I\'ve tried toy
In Spring 4.2 onwards you can attach event listeners to Springs Lifecycle events (and your own) using annotations. Simple add the @EventListener to a method and include the event type as the first (and only) parameter and Spring will automatically detect it and wire it up.
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) {
...
}
}
You could add a custom BeanFactoryPostProcessor which has access to the bean in question.
You may catch a ContextRefreshedEvent with ApplicationListener
.
You can use ApplicationListener<E>
for this purpose. In the generic type parameter you could use ContextRefreshedEvent
for you requirement. And keep note that, in the overridden method onApplicationEvent
you can do anything like autowire a bean or use it as a service or call another service from here. And note that how its different from @PostConstructor
public class MyContextRefreshListener implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
//do what you want
}
}