Spring 创建条件化的bean(满足一定条件才会实例化该bean)

Spring 创建条件化的bean(满足一定条件才会实例化该bean)

  • 应用场景:
    • 要求在特定的环境变量下创建该bean
    • 希望某个bean被声明时候才会创建该bean
    • 希望一个或者多个bean只有在应用的类路径下包含特定的数据库才创建
  • 解决办法:
    • 利用Spring4.0里的注解@Conditional,他可以用在带有@Bean注解的方法上,如果给定的条件返回true,则创建该bean,否则就会忽略该bean的创建。
  • 例如:
    • 假如我们有一个名为Person的类,我们希望设置了isOk属性为true才会实例化Person对象,如果该属性值为false或者没有改属性则该类就会被忽略实例化
    • 代码如下:
@Bean
@Conditional(isOk.class)//指定一个实现了Condition的类,他会返回一个boolean值
public Person perosonBean(){
    return new Person();
}
//实现了Condition接口的类,作用就是判断是否满足条件
public class IsOk implements Condition{
    public boolean matches(ConditionContext context,AnotatedyTypeMetadata metadate){
        Environment evn = context.getEnvironment();
        return evn.containsProperty("isOk");
    }
}

ConditionContext 接口中有如下方法,具体解释如下:

这里写图片描述

AnotatedyTypeMetadata 也是一个接口,它是用来检查带@Bean上还有其他的注解么,其中它中的一个方法isAnnotated()就是判断还有其他注解没。
重点内容 :Spring4.0中对@Profile注解进行了重构,他是基于@Conditional和Condition实现的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值