条件注解@Conditional

可以让某一个Bean 在某些条件下 加入IOC容器, 其他情况下不加IOC容器。

a.准备普通Bean
b.增加条件Bean:

			 给每个bean设置条件, 必须实现Condition接口
                    如:
                        //OilCarCondition类
                            public class OilCarCondition implements Condition {
                                //如果当前环境时燃油,则加入OilCar
                                @Override
                                public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
                                    //获取环境
                                    Environment environment = conditionContext.getEnvironment();
                                    String carType = environment.getProperty("car.type");
                                    if(carType.contains("oil")){
                                        return true;
                                    }
                                    return false;
                                }
                            }

                    注:
                        1.当环境变量car.type="oil"时对应的对象才会在IOC容器中创建;
                        2.环境变量car.type的设置:
                            Run -> Edit Configurations -> VM options

c.根据条件,将bean加入IOC容器

				如:
                  //在MyConfig配置类中
                
                      @Bean
                      @Conditional(OilCarCondition.class)
                      public ICar oilCar(){
                          return new OilCar();
                      }

                      @Bean
                      @Conditional(EnergyCarCondition.class)
                      public ICar energyCar(){
                          return new EnergyCar();
                      }
                  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值