Spring 条件化Bean @Conditional

在Spring的IOC环境下,如果你希望bean在符合某种条件下才创建,如: 类路径下包含特定的库时创建,某个特定的bean声明了之后创建,或者是特定的环境变量设置的情况下创建。

       为了简化实现该功能,Spring4引入了@Conditional注解,它可以用到带有@Bean注解的方法上。如果给定的条件计算结果为true,就创建改bean,否则就被忽略。

      程序清单1.1

      

      @Bean
      @Conditional(CarCondition.class)
      public Car  carBean(){
		return new Car();
      }

       在@Conditional中给定了一个条件Class---CarConditiona.class。

     @Conditional将通过Condition接口进行条件对比:


这个接口只需要实现matches方法,如果返回为true,就创建带@Conditional注解的bean,如果返回为false,则不创建。

程序清单1.2

public class CarCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        String score = context.getEnvironment().getProperty("score");
        if(score.equals("100")) return true;
        return false;
    }
}
CarCondition条件Class代表如果环境变量中存在score的值并且等于“100”则创建Car对象(如果得满分100,就有汽车O(∩_∩)O~)。

可以深入理解ConditionContext和AnnotatedTypeMetadata对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值