日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring5源码 - 14 如何在所有Bean创建完后做扩展?

發布時間:2025/3/21 javascript 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring5源码 - 14 如何在所有Bean创建完后做扩展? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 葛大爺的問題
  • Answer
    • 方式一 基于SmartInitializingSingleton接口
      • Source
      • Code
    • 方式二 基于Spring事件監聽
      • Source
      • Code
  • 驗證


葛大爺的問題


Answer

想要回答這個問題,就要對Spring的生命周期有一定的了解,今天我們就來回顧一下IOC的生命周期及Spring提供給開發人員的擴展點,當然了,我們今天只聊Bean加載完成后的事兒 。

老規矩 先應用后源碼 ,開搞~

AAA BBB CCC 均是spring管理的bean

@Component public class AAA {public AAA() {System.out.println("AAA init");} }

方式一 基于SmartInitializingSingleton接口

Source

生命周期中倒數第二步

// Instantiate all remaining (non-lazy-init) singletons.finishBeanFactoryInitialization(beanFactory);

SmartInitializingSingleton接口是在所有的Bean實例化完成以后,Spring回調的方法, 所以這里也是一個擴展點,可以在單例bean全部完成實例化以后做處理。


Code

【配置類】

package com.artisan.beanLoadedExtend.smartinit;import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration;@Configuration @ComponentScan("com.artisan.beanLoadedExtend") public class SmartInitConfig {}

【擴展類 implements SmartInitializingSingleton 】

package com.artisan.beanLoadedExtend.smartinit;import org.springframework.beans.factory.SmartInitializingSingleton; import org.springframework.stereotype.Component;@Component public class SmartInitExtend implements SmartInitializingSingleton {@Overridepublic void afterSingletonsInstantiated() {System.out.println("all singleton beans loaded , 自定義擴展here ");} }

【測試】

package com.artisan.beanLoadedExtend.smartinit;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Test {public static void main(String[] args) {AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SmartInitConfig.class);} }

方式二 基于Spring事件監聽

Source

生命周期的最后一步是finishRefresh();,這里面中有一個方法是publishEvent

所以這里也可以進行擴展,監聽ContextRefreshedEvent事件 。


Code

【配置類】

package com.artisan.beanLoadedExtend.listener;import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan("com.artisan.beanLoadedExtend") public class Config { }

【基于接口的方式】

package com.artisan.beanLoadedExtend.listener;import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component;@Component public class BeanLoadedExtendListener implements ApplicationListener<ContextRefreshedEvent> {@Overridepublic void onApplicationEvent(ContextRefreshedEvent event) {System.out.println("監聽到ContextRefreshedEvent, 自定義擴展here ");} }

【基于注解的方式】

package com.artisan.beanLoadedExtend.listener;import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component;@Component public class BeanLoadedExtendListenerByAnno {@EventListener(ContextRefreshedEvent.class)public void extend(){System.out.println("基于@EventListener的監聽");} }

二選一,推薦基于注解的方式


【測試】

package com.artisan.beanLoadedExtend.listener;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Test {public static void main(String[] args) {AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(Config.class);}}

驗證

總結

以上是生活随笔為你收集整理的Spring5源码 - 14 如何在所有Bean创建完后做扩展?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 激情小说视频在线 | 女优视频在线观看 | 农村一级毛片 | 亚洲成人一区二区三区 | 嫩草视频免费观看 | 亚洲爱视频 | 97精品国产97久久久久久免费 | 在线观看理论片 | 男性影院 | 艳妇乳肉豪妇荡乳av无码福利 | 蜜乳av一区二区三区 | 一级毛片基地 | 国产电影一区在线观看 | 中文字幕国产在线观看 | 欧美人妻少妇一区二区三区 | 91久久影院 | 国产精品视频免费看 | 黄a视频| 日本免费一区二区三区四区 | 亚洲免费成人网 | 国产乱妇无码大片在线观看 | 亚洲国产第一页 | 在线看片黄 | 女18毛片 | 日本在线观看中文字幕 | 91精品国产色综合久久不卡蜜臀 | 性欧美bb| 欧美午夜精品久久久久久孕妇 | 日日碰狠狠添天天爽 | 99久 | 在线观看av网 | 日韩国产在线一区 | 男人午夜av| 日日免费视频 | 97免费在线视频 | 辟里啪啦国语版免费观看 | 日韩电影第一页 | 国内性爱视频 | av天天看| 男人操女人免费视频 | 久久人妻精品白浆国产 | 免费精品视频在线观看 | 精品乱码一区二区三区 | 国产精品sm调教免费专区 | 亚洲a v网站 | 日韩一区二区三区视频在线 | 97在线观看视频 | 日韩欧美在线视频免费观看 | 午夜h视频 | 国产免费一区二区 | 干干天天| 美女视频91 | 亚洲午夜精品久久久久久人妖 | 九九热这里有精品视频 | 亚洲精品18在线观看 | 在线网站黄 | 精品国产一区二区三区av性色 | 91视频中文字幕 | 久久久人人爽 | www.成人在线观看 | 91午夜剧场 | 成人av在线电影 | 久久伊人亚洲 | 日本www网站| 91精品久久香蕉国产线看观看 | 黄色小说网站在线观看 | 天天看天天色 | 国产3p精品一区 | 免费看片色 | 久久精品9 | 日本在线视频免费 | 国产在线一区视频 | 欧美丰满熟妇xxxxx | 韩国短剧在线观看 | 天天摸天天干天天操 | 免费毛片在线 | 国产日视频 | 国产综合在线观看 | 国产欧美一区二区精品性色超碰 | 国产精品日韩欧美一区二区三区 | 国产乱子伦一区二区 | 日韩久久精品电影 | 9久久9毛片又大又硬又粗 | 欧美激情第五页 | 欧美熟妇精品黑人巨大一二三区 | 外国一级片 | 久草视| 精品一二三区 | 欧美在线一 | 天天操网站 | 日韩成人av免费在线观看 | av免费精品 | 俄罗斯黄色大片 | 6080午夜伦理 | 亚洲激情视频小说 | 欧美午夜一区二区三区 | 丝袜国产在线 | 国产超碰 | 欧美黄在线 |