91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring啟動后怎么獲取所有擁有特定注解的Bean

發布時間:2021-05-22 13:30:24 來源:億速云 閱讀:230 作者:小新 欄目:編程語言

小編給大家分享一下Spring啟動后怎么獲取所有擁有特定注解的Bean,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

最近項目中遇到一個業務場景,就是在Spring容器啟動后獲取所有的Bean中實現了一個特定接口的對象,第一個想到的是ApplicationContextAware,在setApplicationContext中去通過ctx獲取所有的bean,后來發現好像邏輯不對,這個方法不是在所有bean初始化完成后實現的,后來試了一下看看有沒有什么Listener之類的,發現了好東西ApplicationListener,然后百度一下ApplicationListener用法,原來有一大堆例子,我也記錄一下我的例子好了。

很簡單,只要實現ApplicationListener<ContextRefreshedEvent>接口,然后把實現類進行@Component即可,代碼如下:

@Component 
public class ContextRefreshedListener implements ApplicationListener<ContextRefreshedEvent> {
	@Override 
	  public void onApplicationEvent(ContextRefreshedEvent event) {
		// 根容器為Spring容器 
		if(event.getApplicationContext().getParent()==null){
			Map<String,Object> beans = event.getApplicationContext().getBeansWithAnnotation(IMobile.class);
			for (Object bean:beans.values()){
				System.err.println(bean==null?"null":bean.getClass().getName());
			}
			System.err.println("=====ContextRefreshedEvent====="+event.getSource().getClass().getName());
		}
	}
}

其中,通過event.getApplicationContext().getBeansWithAnnotation獲取到所有擁有特定注解的Beans集合,然后遍歷所有bean實現業務場景。

總結思考:這樣的功能可以實現系統參數的初始化,獲取系統中所有接口服務清單等一系列需要在Spring啟動后初始化的功能。

延生一下:除了以上啟動后事件外,還有其他三個事件

Spring啟動后怎么獲取所有擁有特定注解的Bean

Closed在關閉容器的時候調用,Started理論上在容器啟動的時候調用,Stopped理論上在容器關閉的時候調用。

我通過TomcatServer進行啟動停止,只看到了Refreshed和Closed,不知道為啥,有空再繼續研究

以上是“Spring啟動后怎么獲取所有擁有特定注解的Bean”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

饶平县| 会东县| 萝北县| 东至县| 夏津县| 固镇县| 固原市| 青岛市| 新龙县| 乌拉特中旗| 聂拉木县| 东丰县| 大姚县| 岫岩| 清徐县| 青冈县| 资源县| 永顺县| 凯里市| 色达县| 永德县| 陇西县| 宾川县| 镇远县| 汝州市| 鄂尔多斯市| 柘荣县| 大同县| 巴青县| 资溪县| 琼中| 龙山县| 成安县| 自贡市| 涟水县| 西乌| 桐城市| 封开县| 汽车| 崇明县| 大足县|