条件注解如何春天在引导中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
1,条件注解介绍
含义:基于条件的注解
作用:根据是否满足某一个特定条件来决定是否创建某个特定的bean
意义:Springboot实现自动配置的关键基础能力
2,常见条件注解
@ConditionalOnBean框架中存在某个bean时生效
@ConditionalOnMissingBean在bean不存在时生效
@ConditionalOnClass框架中存在某个类时生效
@ConditionalOnMissingClass在类不存在时生效
@ConditionalOnWebApplication当前是网络环境
@ConditionalOnNotWebApplication当前不是网络环境
@ConditionalOnProperty当前框架中是否包含特定的属性
@ConditionalOnJava当前是否存在某个Java版本
3,有条件的使用
1)创建一个。java,增加注解ConditionalOnProperty,表示系统中有这个属性才实例化一个
@ component @ConditionalOnProperty (“com.example.condition") public class  A { }
2)创建测试类
@RunWith (SpringRunner.class) @SpringBootTest @ import (MyBeanImport.class) public class  ConditionTest implements ApplicationContextAware  { , private 才能;ApplicationContext  applicationContext; , , @Test才能 public 才能;void 外种皮(),{ ,,,System.out.println (applicationContext.getBean (A.class)); ,,} , , @Override才能 public 才能;void  setApplicationContext (ApplicationContext applicationContext), throws BeansException { ,,,this.applicationContext =, applicationContext; ,,} }
3,运行测试类
抛出异常,表示没有找到这一个类。
public class MyCondition implements Condition { @Override才能 public 才能;boolean 匹配(ConditionContext 上下文,AnnotatedTypeMetadata 元数据),{ ,,,String [], properties =, (String[]),元数据 ,,,,,,,.getAnnotationAttributes (“com.example.demo.condi.MyConditionAnnotation") ,,,,,,,. get (“value"); ,,,(String property :属性){ ,,,,,如果(StringUtils.isEmpty (context.getEnvironment () . getproperty(财产))){ ,,,,,,,return 假; ,,,,,} ,,,} ,,,return 真实; ,,} }
2)创建注解MyConditionAnnotation,并且引入条件注解,引入MyCondition类
@Target ({ElementType.TYPE, ElementType.METHOD}) @Retention (RetentionPolicy.RUNTIME) @Documented @Conditional ({MyCondition.class}) public @interface  MyConditionAnnotation { String[],才能值(),default {}; }
3)创建类AA使用注解MyConditionAnnotation
@ component @MyConditionAnnotation ({“com.example.condition1",“com.example.condition2"}) public class  AA { }条件注解如何春天在引导中使用