条件注解如何春天在引导中使用

  

条件注解如何春天在引导中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

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,运行测试类

抛出异常,表示没有找到这一个类。

条件注解如何春天在引导中使用“> </p> <p>然后在应用程序。属性文件中增加属性</p> <p> <img src= 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  {   }

条件注解如何春天在引导中使用