springboot中中Conditional相关注解

本文深入解析了Spring框架中用于条件化Bean实例化的各种注解,包括@ConditionalOnBean、@ConditionalOnClass、@ConditionalOnExpression、@ConditionalOnMissingBean、@ConditionalOnMissingClass和@ConditionalOnNotWebApplication。详细介绍了这些注解的使用场景和配置参数,帮助开发者更灵活地控制Bean的创建。
@ConditionalOnBean(仅仅在当前上下文中存在某个对象时,才会实例化一个Bean) @ConditionalOnClass(某个class位于类路径上,才会实例化一个Bean) @ConditionalOnExpression(当表达式为true的时候,才会实例化一个Bean) @ConditionalOnMissingBean(仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean) @ConditionalOnMissingClass(某个class类路径上不存在的时候,才会实例化一个Bean) @ConditionalOnNotWebApplication(不是web应用)

 

  • @ConditionalOnBean(主要在BeanFactory类中匹配)

        Class<?>[] value() default {} //类名 .class  容器中存在该类就加载该配置
       String[] type() default {}  //   容器中存在该类就加载该配置 一般配置全限定性类名
       String[] name() default {}; //bean 在sprin容器中的名称,默认为类名第一个字母小写
    • @ConditionalOnProperty

      name 和 prefix 组合获取 application.yml配置 (prefix.name),如果不配置prefix,name不支持嵌套

      比如spring.cache 直接 配置在name (name="spring.cache")上获取不到;要这样配置( prefix="spring",name="cache");前面获取到值与havingValue 设置的值进行比较,比较的结果依据matchIfMissing值设定来确定是否加载该配置类,默认matchIfMissing为false, 两者值相等就进行加载,否则不加载

    表达式为true 的时候加载 配置类 (supported a SpEL expression.)

    • @ConditionalOnExpression

     

    •    Class<?>[] value() default {}; //类名.class   
        String[] name() default {}; //类名是否存在 一般配置全限定性类名
    • @ConditionalOnMissingClass 和 @ConditionalOnClass 相同配置作用相反

    • @ConditionalOnMissingBean 和 @ConditionalOnBean 相同配置作用相反

    • @ConditionalOnClass(是否存在该类,存在该类就加载该类配置(和容器没有关系))

转载于:https://www.cnblogs.com/caibixiang123/p/10987591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值