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

歡迎訪問 生活随笔!

生活随笔

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

javascript

Spring - BeanDefinition的注册顺序 DeffredImportSelector

發布時間:2025/3/21 javascript 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring - BeanDefinition的注册顺序 DeffredImportSelector 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • BeanDefinition的注冊順序
  • DeffredImportSelector


BeanDefinition的注冊順序

  • 首先是 @ComponentScan掃描: @Component @Service @Controller
  • @Import的 @Component @Service @Controller
  • @Configuration 和 該配置類里面的Bean -----> 該配置類里面的@Import進來的實現類
  • @Import進來的@Configuration 和 該配置類里面的@Bean -----> 該配置類里面的@Import進來的實現類
  • @Import進來的實現了DeffredImportSelector接口的@Configuration ----> 和 該配置類里面的@Bean -----> 該配置類里面的@Import進來的實現了@ImportBeanDefinitionRegistrar接口
  • DeffredImportSelector 是Spring Boot 自動裝配原理中不可獲取的一部分, 實現了 延遲 + 分組


    DeffredImportSelector

    import org.springframework.context.annotation.DeferredImportSelector; import org.springframework.core.type.AnnotationMetadata;import java.util.ArrayList; import java.util.List; import java.util.function.Predicate;/**** 延遲 特性, 分組特性*/ public class MyDeferredImportSelector implements DeferredImportSelector {@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {return new String[]{"com.artisan.beans.Person"};}@Overridepublic Predicate<String> getExclusionFilter() {return null;}@Overridepublic Class<? extends Group> getImportGroup() {// 這個返回值決定調用DeferredImportSelector.selectImports 如果null// 還是調用Group.selectImportsreturn MyGroup.class;}// 如果getImportGroup返回自定義Group , 會調用自定義Group的process方法// 如果getImportGroup返回 null,會調用DefaultDeferredImportSelectorGroup的process方法,即調用selectImports// 分組利用歸類,同一組的bean只影響本組的順序private static class MyGroupimplements DeferredImportSelector.Group{AnnotationMetadata metadata;@Overridepublic void process(AnnotationMetadata metadata, DeferredImportSelector selector) {this.metadata=metadata;}// 實現 分組 @Overridepublic Iterable<Entry> selectImports() {List<Entry> list=new ArrayList<>();list.add(new Entry(this.metadata,"com.artisan.beans.Person"));return list;}}}

    總結

    以上是生活随笔為你收集整理的Spring - BeanDefinition的注册顺序 DeffredImportSelector的全部內容,希望文章能夠幫你解決所遇到的問題。

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