Calling A Method After all SpringBeans and ApplicationContext have been initialized

前端 未结 4 583
滥情空心
滥情空心 2020-12-18 21:22

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

相关标签:
4条回答
  • 2020-12-18 21:49

    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) {
            ...
        }
    }
    
    0 讨论(0)
  • 2020-12-18 21:49

    You could add a custom BeanFactoryPostProcessor which has access to the bean in question.

    0 讨论(0)
  • 2020-12-18 21:55

    You may catch a ContextRefreshedEvent with ApplicationListener.

    0 讨论(0)
  • 2020-12-18 22:09

    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
        }
    }
    
    0 讨论(0)
提交回复
热议问题