當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring - @Conditional全解
生活随笔
收集整理的這篇文章主要介紹了
Spring - @Conditional全解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 作用
- 擴展注解
- Code
- Bean1 Bean2
- 自定義比較規則
- 配置類
- 測試類
- 如何校驗自動配置類是否生效
作用
必須是@Conditional指定的條件成立,才給容器中添加組件,配置配里面的所有內容才生效
擴展注解
| @ConditionalOnJava | 系統的java版本是否符合要求 |
| @ConditionalOnBean | 容器中存在指定Bean; |
| @ConditionalOnMissingBean | 容器中不存在指定Bean; |
| @ConditionalOnExpression | 滿足SpEL表達式指定 |
| @ConditionalOnClass | 系統中有指定的類 |
| @ConditionalOnMissingClass | 系統中沒有指定的類 |
| @ConditionalOnSingleCandidate | 容器中只有一個指定的Bean,或者這個Bean是首選Bean |
| @ConditionalOnProperty | 系統中指定的屬性是否有指定的值 |
| @ConditionalOnResource | 類路徑下是否存在指定資源文件 |
| @ConditionalOnWebApplication | 當前是web環境 |
| @ConditionalOnNotWebApplication | 當前不是web環境 |
| @ConditionalOnJndi | JNDI存在指定項 |
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全解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring - @CompentSca
- 下一篇: Java8 - 自定义实现体会Futur