一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - springboot @ConditionalOnMissingBean注解的作用詳解

springboot @ConditionalOnMissingBean注解的作用詳解

2020-08-14 00:09張占嶺 Java教程

這篇文章主要介紹了springboot @ConditionalOnMissingBean注解的作用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

@ConditionalOnMissingBean,它是修飾bean的一個注解,主要實現的是,當你的bean被注冊之后,如果而注冊相同類型的bean,就不會成功,它會保證你的bean只有一個,即你的實例只有一個,當你注冊多個相同的bean時,會出現異常,以此來告訴開發人員。

springboot @ConditionalOnMissingBean注解的作用詳解

代碼演示

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Component
public class AutoConfig {
  @Bean
  public AConfig aConfig() {
    return new AConfig("lind");
  }
 
  @Bean
  @ConditionalOnMissingBean(AMapper.class)
  public AMapper aMapper1(AConfig aConfig) {
    return new AMapperImpl1(aConfig);
  }
 
  @Bean
  public AMapper aMapper2(AConfig aConfig) {
    return new AMapperImpl2(aConfig);
  }
}

因為在aMapper1上面標識了AMapper類型的bean只能有一個實現 @ConditionalOnMissingBean(AMapper.class),所以在進行aMapper2注冊時,系統會出現上面圖上的異常,這是正常的。

當我們把 @ConditionalOnMissingBean(AMapper.class) 去掉之后,你的bean可以注冊多次,這時需要用的@Primary來確定你要哪個實現;一般來說,對于自定義的配置類,我們應該加上@ConditionalOnMissingBean注解,以避免多個配置同時注入的風險。

@Primary標識哪個是默認的bean

?
1
2
3
4
5
6
7
8
9
10
@Bean
public AMapper aMapper1(AConfig aConfig) {
  return new AMapperImpl1(aConfig);
}
 
@Bean
@Primary
public AMapper aMapper2(AConfig aConfig) {
  return new AMapperImpl2(aConfig);
}

@ConditionalOnProperty

通過其三個屬性prefix,name以及havingValue來實現的,其中prefix表示配置文件里節點前綴,name用來從application.properties中讀取某個屬性值,havingValue表示目標值。

  • 如果該值為空,則返回false;
  • 如果值不為空,則將該值與havingValue指定的值進行比較,如果一樣則返回true;否則返回false。
  • 返回值為false,則該configuration不生效;為true則生效。

下面代碼演示為配置文件lind.redis.enable為true時才會注冊RedisFactory這個bean

?
1
2
3
4
5
6
7
8
@Configuration
@ConditionalOnProperty(prefix="lind.redis",name = "enable", havingValue = "true")
public class RedisConfig {
  @Bean
  public RedisMap redisMap(){
    return new RedisMapImpl();
  }
}

其它注釋及總結

  • @ConditionalOnBean // 當給定的在bean存在時,則實例化當前Bean
  • @ConditionalOnMissingBean // 當給定的在bean不存在時,則實例化當前Bean
  • @ConditionalOnClass // 當給定的類名在類路徑上存在,則實例化當前Bean
  • @ConditionalOnMissingClass // 當給定的類名在類路徑上不存在,則實例化當前Bean

到此這篇關于springboot @ConditionalOnMissingBean注解的作用詳解的文章就介紹到這了,更多相關springboot @ConditionalOnMissingBean注解內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/lori/p/13490005.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99久久国产综合精麻豆 | 波多野结衣黑人系列在线观看 | aigao视频| 国产动作大片 | 44444色视频在线观看 | porno中国xxxxx| 亚洲四虎| 日出水了特别黄的视频 | 午夜私人福利影院 | 亚洲人和日本人hd | 国产在线精品香蕉综合网一区 | 午夜一区二区福利视频在线 | 国产精品嫩草影院在线看 | 韩国三级动漫 | 亚洲一区二区三区在线播放 | 国产高清自拍 | 热久久最新视频 | 国产精品国产三级国产专区不 | 97色| 久久亚洲高清观看 | 欧美日韩在线观看精品 | 精品国产综合 | 四虎影视色费永久在线观看 | 暖暖视频高清图片免费完整版 | 第一次破女视频国产一级 | 韩日视频在线观看 | boobsmilking流奶水野战 | 第一国内永久免费福利视频 | 国产精品综合在线 | 亚洲精品乱码蜜桃久久久 | 四虎海外影院 | 天天操天天射天天爽 | 情侣宾馆愉拍自拍视频 | 91麻豆国产 | 色老板视频在线 | 99爱在线精品视频免费观看9 | cos美女被黄网站 | 波多野结衣52部合集在线观看 | 成人在线观看视频免费 | 国产福利在线观看第二区 | 女人被男人躁得好爽免费视频 |