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

歡迎訪問 生活随笔!

生活随笔

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

javascript

Spring Boot 自动配置之条件注解

發布時間:2025/6/17 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot 自动配置之条件注解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Spring Boot 神奇的自動配置,主要依靠大量的條件注解來使用配置自動化。

根據滿足某一個特定條件創建一個特定的Bean。比如說,在某些系統變量下創建Bean,或者只有在某個Bean創建后才去創建另外一個Bean. 就是根據條件來控制Bean的創建行為,可以利用該特性來進行一些自動配置。

一、常用的條件注解

  • @Conditional 依賴的條件
  • @ConditionalOnBean 在某個Bean存在的條件下
  • @ConditionalOnMissingBean 在某個Bean不存在的條件下
  • @ConditionalOnClass 在某個Class存在的條件下
  • @ConditionalOnMissingClass 在某個Class不存在的條件下

比較常見的是這些注解,還有其它的比如 @ConditionalOnWebApplication, @ConditionalOnProperty 等,可舉一反三

二、特別說明 @Conditional 注解

@Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Conditional {/*** All {@link Condition Conditions} that must {@linkplain Condition#matches match}* in order for the component to be registered.*/Class<? extends Condition>[] value();}

使用@Conditional注解,對象需要實現Condition接口,Condition 接口是一個函數式接口

@FunctionalInterface public interface Condition {boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata); }

三、條件注解示例

示例場景:項目中動態的配置Mysql或者Oracle數據源

1. 定義配置文件

db-type=oracle

2. 定義Condition類

MySqlCondition.java

public class MySqlCondition implements Condition {@Overridepublic boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {return "mysql".equals(context.getEnvironment().getProperty("db-type"));} }

OracleCondition.java

public class OracleCondition implements Condition {@Overridepublic boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {return "oracle".equals(context.getEnvironment().getProperty("db-type"));} }

獲取配置文件db-type的值

3. JdbcFactory接口

public interface JdbcFactory {void create(); }

4. 默認的Mysql和Oracle實現

Mysql

@ConditionalOnMissingBean(value = JdbcFactory.class, ignored = MySqlDefaultFactory.class) @Conditional(MySqlCondition.class) @Component public class MySqlDefaultFactory implements JdbcFactory {@Overridepublic void create() {System.out.println("Default MySql create ..");}}

Oracle

@ConditionalOnMissingBean(value = JdbcFactory.class, ignored = OracleDefaultFactory.class) @Conditional(OracleCondition.class) @Component public class OracleDefaultFactory implements JdbcFactory {@Overridepublic void create() {System.out.println("Default oracle create..");} }

5. 測試默認實現方式

@Resource private JdbcFactory jdbcFactory;@Test public void conditionOnMissBean() {jdbcFactory.create(); }

結果:

Default MySql create ..

6. 自定義實現方式

@Component public class MysqlFactory implements JdbcFactory {@Overridepublic void create() {System.out.println("mysql 。。 create");} }

7. 測試

@Resource private JdbcFactory jdbcFactory;@Test public void conditionOnMissBean() {jdbcFactory.create(); }

結果:

mysql 。。 create

8.解析

當環境中不存在 JdbcFactory 的Bean時則使用默認的實現的方式,如例:沒有自定義實現時,則默認使用MySqlDefaultFactory。這在自動化配置中會經常用到。比如redisTemplate 的默認實現

四、GitHub源碼

源碼地址

轉載于:https://my.oschina.net/u/3555293/blog/3012166

總結

以上是生活随笔為你收集整理的Spring Boot 自动配置之条件注解的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日韩精品一区二区三区在线 | 久久嫩 | 色资源在线观看 | 午夜国产一区二区三区 | av影视网| 无码人妻aⅴ一区二区三区有奶水 | 婷婷亚洲综合 | 依依成人综合 | 黄色喷水网站 | 狠狠操免费视频 | av片手机在线观看 | 亚洲AV午夜成人片 | 中文字幕第8页 | 欧美天天色 | 超碰夫妻 | 午夜精品一区二区三区在线 | 日韩成人av网站 | 91av免费看| 久久久久99精品成人片毛片 | 国产精品视频99 | 6080电视影片在线观看 | 黄色片毛片 | 含羞草一区二区 | 成 年 人 黄 色 大 片大 全 | 91原视频| 夜夜爽天天干 | 国产精品亚洲无码 | 亚洲国产精品女人久久久 | 国产成人a∨ | 女同性恋毛片 | 国产欧美精品一区二区色综合 | 亚洲最新av网址 | 妞干网精品 | 超碰91在线观看 | 久久国产情侣 | 国产麻豆一精品一av一免费 | 国产按摩一区二区三区 | av操操| 欧美美女在线 | 香蕉国产片| 国产操| 丁香婷婷在线 | 福利视频免费看 | 国产区在线 | 国产一级免费片 | 日本一级淫片1000部 | aa免费视频| 激情综合丁香五月 | 久久成人18免费观看 | 朝桐光在线播放 | 97精品一区二区视频在线观看 | 欧美日韩亚洲免费 | 奇米影视狠狠干 | 少妇极品熟妇人妻无码 | 亚洲国产精品视频一区二区 | 亚洲精品高清视频在线观看 | 91丝袜呻吟高潮美腿白嫩在线观看 | javxxx| 僵尸叔叔在线观看国语高清免费观看 | 免费黄色在线视频 | 精品伦精品一区二区三区视频密桃 | 成人黄色网页 | 欧美中日韩在线 | 亚州欧美日韩 | 亚洲九九九九 | 国产网站av| jizz内谢中国亚洲jizz | 美国黄色一级毛片 | 久久久国产精华液999999 | 国产精品黄 | 免费观看一区二区三区视频 | 国产精品国产三级国产aⅴ中文 | 九九99久久 | 逼逼爱插插网站 | 美丽的小蜜桃2:美丽人生 | 亚洲免费观看视频 | 91精品国产入口在线 | 国内精品卡一卡二卡三 | 国产免费色视频 | 成人免费观看视频 | 99久久99久久精品国产片桃花 | 黄色片免费视频 | 中文字幕在线播放日韩 | 黄色片一区二区三区 | 日穴| 日韩视频三区 | 久久久久久久香蕉 | 伊人伊人 | 美女大bxxxxn内射 | a毛片视频 | 精品无码国产一区二区三区av | 精品久久久蜜桃 | 国产精品久久久久久影视 | 日日射天天干 | 东京热无码av一区二区 | 男人av的天堂 | 欧美激情一区 | 老司机在线永久免费观看 | 少妇一区二区三区四区 |