@ConditionalOnBean 當容器有指定Bean的條件下 @ConditionalOnClass 當容器有指定類的條件下 @ConditionalOnExpression 基於SpEL表達式作為判斷條件 @ConditionalOnJava 基於JVM版本作為判斷條件 @ConditionalOnJndi 在JDNI存在的條件下查找指定位置 @ConditionalOnMissingBean 當容器沒有指定Bean的情況下 @ConditionalOnMissingClass 當容器沒有指定類的情況下 @ConditionalOnNotWebApplication 當前項目不是Web項目的條件下 @ConditionalOnProperty 指定的屬性是否有指定的值 @ConditionalOnResource 類路徑是否有指定的值 @ConditionalOnSingleCandidate 當前指定Bean在容器中只有一個,或者雖然有多個但是指定首選Bean @ConditionalOnWebApplication 當前項目是Web項目的情況下 比如根據property文件中的屬性值來決定注入哪個controller:
@ConditionalOnProperty(prefix = "school" ,name="SingleName",havingValue = "Gzykdx") @Controller public class GzykdxController extends BaseSchoolController {//廣州醫科大學 @Override public String getTargetUrl() { return null; } @GetMapping("/getCaptcha") public void getCaptcha(HttpServletRequest request, HttpServletResponse resp){ System.out.println("===================request:"+request.getSession().getId());
......
通過其兩個屬性name以及havingValue來實現的,其中name用來從application.properties中讀取某個屬性值。
如果該值為空,則返回false;
如果值不為空,則將該值與havingValue指定的值進行比較,如果一樣則返回true;否則返回false。
如果返回值為false,則該configuration不生效;為true則生效。