最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring啟動后獲取所有擁有特定注解的Bean實例代碼

 更新時間:2018年02月01日 15:57:38   作者:joshua1830  
這篇文章主要介紹了Spring啟動后獲取所有擁有特定注解的Bean實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文研究的主要是Spring啟動后獲取所有擁有特定注解的Bean,具體如下。

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

很簡單,只要實現(xiàn)ApplicationListener<ContextRefreshedEvent>接口,然后把實現(xiàn)類進行@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實現(xiàn)業(yè)務場景。

總結(jié)思考:這樣的功能可以實現(xiàn)系統(tǒng)參數(shù)的初始化,獲取系統(tǒng)中所有接口服務清單等一系列需要在Spring啟動后初始化的功能。

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

Closed在關(guān)閉容器的時候調(diào)用,Started理論上在容器啟動的時候調(diào)用,Stopped理論上在容器關(guān)閉的時候調(diào)用。

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

總結(jié)

以上就是本文關(guān)于Spring啟動后獲取所有擁有特定注解的Bean實例代碼的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • SpringBoot2零基礎(chǔ)到精通之配置文件與web開發(fā)

    SpringBoot2零基礎(chǔ)到精通之配置文件與web開發(fā)

    SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時也是簡化Spring的一種快速開發(fā)的腳手架,本篇讓我們一起學習配置文件以及web相關(guān)的開發(fā)
    2022-03-03
  • SpringBoot如何通過webjars管理靜態(tài)資源文件夾

    SpringBoot如何通過webjars管理靜態(tài)資源文件夾

    這篇文章主要介紹了SpringBoot如何通過webjars管理靜態(tài)資源文件夾,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Java swing仿酷狗音樂播放器

    Java swing仿酷狗音樂播放器

    這篇文章主要為大家詳細介紹了Java swing實現(xiàn)音樂播放器,Java開發(fā)圖形界面程序音樂播放器仿酷狗音樂播放器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java通過反射將 Excel 解析成對象集合實例

    Java通過反射將 Excel 解析成對象集合實例

    這篇文章主要介紹了Java通過反射將 Excel 解析成對象集合實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java日志框架用法及常見問題解決方案

    Java日志框架用法及常見問題解決方案

    這篇文章主要介紹了Java日志框架用法及常見問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • java中單雙斜杠的使用圖文詳解

    java中單雙斜杠的使用圖文詳解

    JAVA中的斜杠有正斜杠與反斜杠之分,正斜杠,一般就叫做斜杠,下面這篇文章主要給大家介紹了關(guān)于java中單雙斜杠使用的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • springboot編程式事務TransactionTemplate的使用說明

    springboot編程式事務TransactionTemplate的使用說明

    這篇文章主要介紹了springboot編程式事務TransactionTemplate的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • IntelliJ IDEA下SpringBoot如何指定某一個配置文件啟動項目

    IntelliJ IDEA下SpringBoot如何指定某一個配置文件啟動項目

    這篇文章主要介紹了IntelliJ IDEA下SpringBoot如何指定某一個配置文件啟動項目問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • MyBatis-Plus枚舉和自定義主鍵ID的實現(xiàn)步驟

    MyBatis-Plus枚舉和自定義主鍵ID的實現(xiàn)步驟

    這篇文章主要給大家介紹了關(guān)于MyBatis-Plus枚舉和自定義主鍵ID的相關(guān)資料,文中通過實例代碼以及圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-02-02
  • Java基于正則表達式實現(xiàn)xml文件的解析功能詳解

    Java基于正則表達式實現(xiàn)xml文件的解析功能詳解

    這篇文章主要介紹了Java基于正則表達式實現(xiàn)xml文件的解析功能,結(jié)合實例形式分析了java使用正則表達式針對xml文件節(jié)點的相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08

最新評論

扶沟县| 于都县| 克拉玛依市| 长岭县| 桃园县| 宝丰县| 原平市| 呈贡县| 朝阳区| 厦门市| 清远市| 灯塔市| 汤阴县| 陆川县| 邯郸市| 大连市| 莱阳市| 朔州市| 徐水县| 桐梓县| 会东县| 南江县| 万安县| 女性| 金塔县| 五常市| 蒙阴县| 莱芜市| 新余市| 东城区| 浦县| 滕州市| 台南市| 湟中县| 郧西县| 嘉荫县| 江北区| 阜阳市| 崇左市| 北安市| 昌邑市|