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 toying around with
<bean id="..." class="..." init-method="initialize">
but this method will call a applicationContext.get().getBean(beanId);
method.
I was wondering if anyone knows how to do this.
Thank you.
You can use
ApplicationListener<E>
for this purpose. In the generic type parameter you could useContextRefreshedEvent
for you requirement. And keep note that, in the overridden methodonApplicationEvent
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
You may catch a
ContextRefreshedEvent
withApplicationListener
.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
You could add a custom BeanFactoryPostProcessor which has access to the bean in question.