Solomon_肖哥弹架构 跟大家“弹弹” SpringBoot 的整体设计方案与核心功能点,那么今天来看自定义Condition怎么定义与运行,通常用于特定的特殊条件场景。 欢迎 点赞,点赞,点赞。 关注本人的公众号Solomon肖哥弹架构获取更多的惊喜
Conditional
@Conditional是SpringFramework的核心判断功能,SpringBoot在它的基础上定义了@ConditionalOnClass,@ConditionalOnProperty一系列的注解来实现更丰富的执行判断。
自定义condition注解
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
@Documented
@Conditional(SolomonPropertyCondition.class)
public @interface ConditionalOnSolomon {
/**
* 业务键
*/
String key();
/**
* 业务键
*/
String value();
}
自定义Condition类
创建CSolomonPropertyCondition类并且实现Condition,判断注解内的value值等于Solomon返回true,否则返回false
public class SolomonPropertyCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
Map<String, Object> attributes = metadata.getAnnotationAttributes(ConditionalOnSolomon.class.getName());
String propertyName = String.valueOf(attributes.get("key"));
String propertyValue = String.valueOf(attributes.get("value"));
return "Solomon".equals(propertyValue);
}
}
运行自定义Condition
public class ConditionalSolomonBootstrap {
//创建字符串Bean,且属性值为Solomon则创建
@Bean
@ConditionalOnSystemProperty(key = "http://www.xiaoailiang.com", value = "Solomon")
public String CreateSolomon() {
return "Solomon ";
}
public static void main(String[] args) {
ConfigurableApplicationContext context = new SpringApplicationBuilder(ConditionalSolomonBootstrap.class)
.web(WebApplicationType.NONE)
.run(args);
// 通过名字获取String类型的Bean
String solomonBeanName = context.getBean("Solomon", String.class);
// 打印Bean名字
System.out.println(solomonBeanName);
// 关闭上下文
context.close();
}
}
关注&点赞 肖哥 后续讲解,SpringBoot 自定义启动Logo的实现方案
你的点赞与关注 是 Solomon_肖哥弹架构持续的动力。