标签:决定 OLE env pem err lse exist ssi equals
实现Conditional接口, 实现matches方法。
public class MqExistsCondition implements Condition{
@Override
public boolean matches(ConditionContext context,AnnotatedTypeMetadata metadata) {
Environment environment = context.getEnvironment();
//从这里获取配置文件中 active 的值,根据当前的active值决定是否加载类
String[] activeProfiles = environment.getActiveProfiles();
for (String active : activeProfiles) {
if(active.equals(ActiveEnum.open_active.getActive().toString())){
return true;
}
}
return false;
}
}
在需要判断条件的bean上,加上@Conditional(TestExistsCondition.class) 即可在满足条件的时候加载对应的类。
@Bean
@Conditional(TestMqExistsCondition.class)
public TestBean getTestBean(){
TestBean testBean = new TestBean();
return testBean;
}
? 如果此class不存在
? 只有对应的ban在系统中都没有被创建,它修饰的初始化代码块才会执行,用户自己手动创建的bean优先
@ConditionalOnBean
仅仅在当前上下文中存在某个对象时,才会实例化一个Bean。
@ConditionalOnClass
? 某个class位于类路径上,才会实例化一个Bean
@ConditionalOnExpression
? 当表达式为true的时候,才会实例化一个Bean。
比如:
@ConditionalOnExpression("true")
@ConditionalOnExpression("${my.controller.enabled:false}")
@ConditionalOnMissingBean
? 仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean
@ConditionalOnMissingClass
某个class类路径上不存在的时候,才会实例化一个Bean
@ConditionalOnNotWebApplication
? 不是web应用
标签:决定 OLE env pem err lse exist ssi equals
原文地址:https://www.cnblogs.com/liangluojun/p/10295702.html