日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot Import及自定義裝配實現方法解析

瀏覽:75日期:2023-05-01 16:46:36

Import的注冊形式:

1、使用@Import導入一個或者多個類字節對象

@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Import { Class<?>[] value();}

使用時一般在配置類上注解,表示該注解類導入了其他配置

@Configuration@Import({ MyBeanFactoryPostProcessor.class, ClassA.class, ClassB.class, ClassC.class})public class TestConfiguration {}

2、使用導入Bean定義登記者

public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar { public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(ClassD.class); registry.registerBeanDefinition('classD', rootBeanDefinition); }}

然后配置導入:

@Configuration@Import(MyImportBeanDefinitionRegistrar.class)public class TestConfiguration {}

測試運行:

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = TestConfiguration.class)public class DefinitionTest { @Autowired private ClassD classD; @Test public void testSample() { System.out.println(classD); }}cn.dzz.bean.ClassD@6771beb3Process finished with exit code 0

3、使用【導入選擇器】

原始版本是直接聲明類完整路徑名

public class MyImportSelector implements ImportSelector { public String[] selectImports(AnnotationMetadata annotationMetadata) { return new String[] {'cn.dzz.bean.ClassD'}; }}

導入配置:

@Configuration@Import(MyImportSelector.class)public class TestConfiguration {}

測試結果:

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = TestConfiguration.class)public class DefinitionTest { @Autowired private ClassD classD; @Test public void testSample() { System.out.println(classD); }}cn.dzz.bean.ClassD@682b2faProcess finished with exit code 0

第二版本,類的限定名固定編寫在源碼文件中不可靈活改變:

我們可以通過外部的配置文件來實現:

1、創建配置讀取類

public class Tc51AutoConfigReader { public static Properties readerProperties(String resource){ Properties properties = new Properties(); InputStream it = Tc51AutoConfigReader.class.getResourceAsStream(resource); try { properties.load(it); } catch (IOException e) { e.printStackTrace(); } return properties; }}

2、獲取字符串,但是這個方法寫的非常簡單,只讀取了一個類

我們的一個Map是允許一個鍵存儲多個值的,也就是讀取多個類

public String[] selectImports(AnnotationMetadata annotationMetadata) {Properties properties = Tc51AutoConfigReader.readerProperties('/Tc51autoconfig.properties');String property = properties.getProperty(Tc51EnableAutoConfig.class.getName());return new String[]{property};}

第三版本,調用Spring寫好的方法和注解方式實現自動裝配

首先仿照SpringBoot創建這樣的配置文件:

內部配置信息:

cn.dzz.annotation.MyEnableAutoConfiguration = cn.dzz.config.RedisConfiguration

聲明一個自定義開啟自動配置注解:

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(MyImportSelector.class)public @interface MyEnableAutoConfiguration {}

然后實現導入選擇器接口的方法變成這樣:

public class MyImportSelector implements ImportSelector { private Class<?> getMyFactoryLoaderClass(){ return MyEnableAutoConfiguration.class; } private List<String> getConfiguration(){ return SpringFactoriesLoader.loadFactoryNames( getMyFactoryLoaderClass(),MyImportSelector.class.getClassLoader() ); } public String[] selectImports(AnnotationMetadata annotationMetadata) { return StringUtils.toStringArray(getConfiguration()); }}

首先是得到注解類的字節對象,它被下面的方法所需要,

獲取配置方法可以從配置文件中讀取信息返回一個List集合,里面裝載了那些類限定名(配置信息)

需要的參數是上面寫的注解類字節對象和一個類加載器

再返回給選擇器方法,集合轉換一下數組即可

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
男女精品网站| 久久精品国产www456c0m| 老司机免费视频一区二区三区| 亚洲一区二区三区高清不卡| 欧美精选一区二区三区| 欧美日韩在线播放视频| 欧美日韩一二三四| 精品日韩毛片| 日韩视频免费| 丝袜国产日韩另类美女| 一区在线免费| 玖玖玖国产精品| 亚洲影视一区二区三区| 蜜臀av国产精品久久久久| 激情综合激情| 丝袜亚洲精品中文字幕一区| 男女男精品视频网| 日韩欧美中文在线观看| 欧美日韩1区2区3区| 欧美日本一区| 麻豆精品在线播放| 国产精品国产一区| 99久久亚洲精品蜜臀| 欧美精品一二| 蜜臀久久99精品久久久久宅男 | 欧美国产视频| 91亚洲国产| 日本精品不卡| 欧美日韩国产免费观看| 亚州av一区| 欧美日韩亚洲一区在线观看| 精品一区视频| 99成人在线视频| 影音国产精品| 日韩欧美美女在线观看| 欧美aaaaaa午夜精品| 亚洲最新无码中文字幕久久| 在线视频精品| 欧美日韩亚洲国产精品| 成人在线观看免费视频| 婷婷综合在线| 欧美日韩精品一区二区三区视频| 国产欧美自拍一区| 国产一区二区三区日韩精品| 不卡一区2区| 综合在线一区| 久久精品女人| 久久精品免费一区二区三区| 亚洲欧美日韩国产一区| 国产午夜精品一区在线观看| 欧美xxxx中国| 先锋影音国产一区| 美女视频一区在线观看| 在线日韩电影| 欧美亚洲网站| 久久国产影院| 日韩在线观看一区二区三区| 嫩草伊人久久精品少妇av杨幂| 99精品在线观看| 日韩精品欧美大片| 精品中国亚洲| 视频在线观看一区| 成人亚洲精品| 中文字幕日韩欧美精品高清在线| 老牛国内精品亚洲成av人片| 五月精品视频| 国产精品多人| 日韩网站在线| 国产一区二区三区四区五区| 日韩一区精品字幕| 成人在线免费观看91| 亚洲日本在线观看视频| 欧洲亚洲一区二区三区| 亚洲天堂日韩在线| 97精品97| 日本va欧美va精品发布| 久久精品国产68国产精品亚洲| 日本午夜精品久久久| 免费国产自久久久久三四区久久| 国产精品资源| 亚洲一区黄色| 色偷偷色偷偷色偷偷在线视频| 日本中文字幕一区二区视频| 日韩欧美一区二区三区在线观看| 青草国产精品| 亚洲国产不卡| 精品国产精品国产偷麻豆| 视频一区视频二区在线观看| 麻豆91小视频| 午夜久久av| 亚洲午夜在线| 成人国产精品一区二区网站| 日韩二区三区在线观看| 国产一区导航| 久久婷婷久久| 国产成人精品999在线观看| 欧美日韩网址| 日韩在线卡一卡二| 久久精品动漫| 国产极品一区| 亚洲va久久久噜噜噜久久| 四虎4545www国产精品| 国产精品久久久久久久久久妞妞 | 热久久国产精品| 播放一区二区| 激情综合五月| 国产日韩欧美三级| 亚州国产精品| 石原莉奈在线亚洲二区| 一区二区三区四区在线看| 中文在线资源| 国产精品v一区二区三区| 日韩精品一级二级| 午夜国产一区二区| 久久精品五月| 国产精品久久久久久妇女| 无码日韩精品一区二区免费| 国产婷婷精品| 狠狠干综合网| 五月精品视频| 欧美1区免费| 久久九九精品| 91精品蜜臀一区二区三区在线| 国产一区二区三区久久| 美女视频黄 久久| 另类综合日韩欧美亚洲| 欧美精品第一区| 久久不卡国产精品一区二区| 国产欧美91| 欧美自拍一区| 国产探花一区在线观看| 国产欧美一区二区精品久久久| 青青在线精品| 国产欧美一区二区三区米奇| 欧美精品国产一区| 国产欧美一区二区三区精品观看 | 丝袜美腿亚洲色图| 性一交一乱一区二区洋洋av| 红桃视频国产一区| 亚洲夜间福利| 欧美女激情福利| 亚洲深夜影院| 在线免费观看亚洲| 日本中文字幕不卡| 国产精选久久| 精品国产网站| 免费在线小视频| 亚洲大片在线| 日韩精品一区第一页| 亚洲日本在线观看视频| 欧美一区91| 久久久国产精品网站| 在线天堂资源www在线污| 久久久久欧美精品| 欧美+亚洲+精品+三区| 日韩精品一区第一页| 日本欧美大码aⅴ在线播放| 国产精品嫩模av在线| 精品国产亚洲一区二区三区大结局| av资源中文在线| 影视先锋久久| 亚洲性视频在线| 国产精品毛片久久久| 日韩在线高清| 亚洲欧美日韩一区在线观看| 日韩av一区二| 国产一区二区三区不卡视频网站| 国产主播一区| 亚洲精品乱码久久久久久蜜桃麻豆| 日韩精选在线| 97精品在线| 伊人久久一区| 国产91在线播放精品| 亚洲欧美日韩国产一区二区| 国产精品一级在线观看| 久久久9色精品国产一区二区三区| 丝袜美腿亚洲一区| 国产一区2区在线观看| 99视频精品| 久久伊人久久| 欧美午夜不卡影院在线观看完整版免费| 日本不卡一区二区三区| 亚洲天堂一区二区| 日韩精品国产欧美| 国产aⅴ精品一区二区四区| 在线看片不卡| 日韩黄色av| 激情国产在线| 亚洲理论在线| 国产高清精品二区| 欧美在线亚洲| 91精品国产自产精品男人的天堂 | 国产欧美另类| 黄色网一区二区| 激情丁香综合| 日韩国产高清在线| 日韩精品欧美| 蜜桃久久精品一区二区| 麻豆精品在线| 中文字幕色婷婷在线视频|