美文网首页
@Conditional

@Conditional

作者: kayabu | 来源:发表于2018-09-22 22:56 被阅读0次

    @Conditionnal(someCondition.class)
    someCondition--某个实现Condition接口的类
    用于根据条件实例化Bean或配置

    import org.springframework.context.annotation.Bean;  
    import org.springframework.context.annotation.Conditional;  
    import org.springframework.context.annotation.Configuration;  
       
    @Configuration  
    public class MyConfiguration {  
       
      @Bean(name="emailerService")  
      @Conditional(WindowsCondition.class)  
      public EmailService windowsEmailerService(){  
          return new WindowsEmailService();  
      }  
       
      @Bean(name="emailerService")  
      @Conditional(LinuxCondition.class)  
      public EmailService linuxEmailerService(){  
        return new LinuxEmailService();  
      }  
    }
    
    • @ConditionalOnBean(仅仅在当前上下文中存在某个对象时,才会实例化一个Bean)
    • @ConditionalOnClass(某个class位于类路径上,才会实例化一个Bean)
    • @ConditionalOnExpression(当表达式为true的时候,才会实例化一个Bean)
    • @ConditionalOnMissingBean(仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean)
    • @ConditionalOnMissingClass(某个class类路径上不存在的时候,才会实例化一个Bean)
    • @ConditionalOnNotWebApplication(不是web应用

    或者可以这样理解:

    • @ConditionalOnClass:该注解的参数对应的类必须存在,否则不解析该注解修饰的配置类;
    • @ConditionalOnMissingBean:该注解表示,如果存在它修饰的类的bean,则不需要再创建这个bean;可以给该注解传入参数例如-
      @ConditionOnMissingBean(name = "example"),这个表示如果name为“example”的bean存在,这该注解修饰的代码块不执行。

    相关文章

      网友评论

          本文标题:@Conditional

          本文链接:https://www.haomeiwen.com/subject/vjxfoftx.html