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

歡迎訪問 生活随笔!

生活随笔

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

javascript

Spring - @Conditional全解

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

文章目錄

  • 作用
  • 擴展注解
  • Code
    • Bean1 Bean2
    • 自定義比較規則
    • 配置類
    • 測試類
  • 如何校驗自動配置類是否生效


作用

必須是@Conditional指定的條件成立,才給容器中添加組件,配置配里面的所有內容才生效


擴展注解

@Conditional擴展注解作用(判斷是否滿足當前指定條件)
@ConditionalOnJava系統的java版本是否符合要求
@ConditionalOnBean容器中存在指定Bean;
@ConditionalOnMissingBean容器中不存在指定Bean;
@ConditionalOnExpression滿足SpEL表達式指定
@ConditionalOnClass系統中有指定的類
@ConditionalOnMissingClass系統中沒有指定的類
@ConditionalOnSingleCandidate容器中只有一個指定的Bean,或者這個Bean是首選Bean
@ConditionalOnProperty系統中指定的屬性是否有指定的值
@ConditionalOnResource類路徑下是否存在指定資源文件
@ConditionalOnWebApplication當前是web環境
@ConditionalOnNotWebApplication當前不是web環境
@ConditionalOnJndiJNDI存在指定項

Code


Bean1 Bean2

public class Bean1 {public Bean1() {System.out.println("我是Bean1的構造方法");} } public class Bean2 {public Bean2() {System.out.println("我是Bean2的構造方法");} }

自定義比較規則

import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata;public class ArtisanCondition implements Condition {@Overridepublic boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {//判斷容器中是否有bean1的組件if(context.getBeanFactory().containsBean("bean1")) {return true;}return false;} }

配置類

import com.tuling.testconditional.compent.Bean1; import com.tuling.testconditional.compent.Bean2; import com.tuling.testconditional.condition.ArtisanCondition; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional;public class MainConfig {@Beanpublic Bean1 bean1() {return new Bean1();}// 如果滿足ArtisanCondition中定義的規則,就實例化Bean2 @Bean@Conditional(value = ArtisanCondition.class) public Bean2 bean2() {return new Bean2();} }

測試類

import com.tuling.testconditional.config.MainConfig; import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class MainClass {public static void main(String[] args) {AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MainConfig.class);for(String beanName:ctx.getBeanDefinitionNames()) {System.out.println("beanName:"+beanName);}} }

為了測試效果

重新測試


如何校驗自動配置類是否生效

配置文件中增加

啟用 debug=true屬性;來讓控制臺打印自動配置報告

總結

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

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