一:@Condtional派生註解(可以看Spring註解版原生的@Conditional作用)
作用:必須是@Conditional指定的條件成立,纔給容器添加組件,配置裏面配置的內容纔會生效。
Conditional擴展註解 | 作用(判斷是否滿足當前指定條件) |
---|---|
ConditionalOnJava | 系統的java版本是否符合要求 |
ConditionalOnBean | 容器中存在指定Bean |
ConditionalOnMissingBean | 容器中不存在指定Bean |
ConditionalOnExpression | 滿足SpEl表達式指定 |
ConditionalOnClass | 系統中存在指定的類 |
ConditionalOnMissingClass | 系統中沒有指定的類 |
ConditionalOnSingleCandidate | 容器中只有一個指定的Bean,或者這個Bean是首選的Bean |
ConditionalOnProperty | 系統中指定的屬性是否有指定的值 |
ConditionalOnResource | 類路徑下是否存在指定的資源文件 |
ConditionalOnWebApplication | 當前是web環境 |
ConditionalOnNotWebApplication | 當前不是web環境 |
ConditionalOnJndi | JNDI存在指定項 |
自動配置類必須在一定條件下才能生效
二:我們怎麼知道那些自動配置類生效
我們可以通過使用debug=true屬性,來讓控制檯自動打印自動配置報告,這樣我們就很方便的知道那些自動配置類生效
============================
CONDITIONS EVALUATION REPORT
============================
Positive matches:(自動配置類啓用的)
-----------------
AopAutoConfiguration matched:
- @ConditionalOnProperty (spring.aop.auto=true) matched (OnPropertyCondition)
AopAutoConfiguration.ClassProxyingConfiguration matched:
- @ConditionalOnMissingClass did not find unwanted class 'org.aspectj.weaver.Advice' (OnClassCondition)
- @ConditionalOnProperty (spring.aop.proxy-target-class=true) matched (OnPropertyCondition)
egative matches:(沒有啓動,匹配成功的自動配置類)
-----------------
ActiveMQAutoConfiguration:
Did not match:
- @ConditionalOnClass did not find required class 'javax.jms.ConnectionFactory' (OnClassCondition)