2010-08-04 56 views

回答

2

您可以添加一個定製的BeanFactoryPostProcessor,它可以訪問相關的bean。

+0

不執行的BeanFactoryPostProcessor之前* *所有的豆類都被初始化? – AJPerez 2018-01-09 09:44:49

11

在Spring 4.2之後,您可以使用註釋將事件監聽器附加到Springs 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) { 
     ... 
    } 
} 
+0

比創建一個bean更容易 – Aakash 2017-06-03 17:35:20

3

您可以使用ApplicationListener<E>用於此目的。在泛型類型參數中,您可以使用ContextRefreshedEvent來滿足您的要求。並且請注意,在覆蓋的方法onApplicationEvent中,您可以執行任何操作,如自動裝入bean或將其用作服務或從此處調用另一個服務。並注意其如何不同於@PostConstructor

public class MyContextRefreshListener implements ApplicationListener<ContextRefreshedEvent> { 

    @Override 
    public void onApplicationEvent(ContextRefreshedEvent event) { 
     //do what you want 
    } 
}