@Conditional及@Conditional的派生注解及@ConditionalOnMission的判定bug

一、@Conditional,用于控制 Spring 容器是否注册某个组件

这意味着 @Conditional 注解在运行时仍然可用,可以被框架或其他工具在运行时检查Class<? extends Condition>[] value();

  • @Target:元注解,用于指定自定义注解可以应用的目标元素类型。
  • ElementType.TYPE:表示该注解可以应用于类、接口、枚举或注解类型。
  • ElementType.METHOD:表示该注解可以应用于方法
  • @Retention:元注解,用于指定自定义注解的保留策略。
  • RetentionPolicy.RUNTIME:表示该注解会被保留到运行时,并且可以通过反射访问。
  • value:自定义注解的成员变量,用于指定一组 Condition 的子类。
  • Class<? extends Condition>[]:表示成员变量的类型是一个 Condition 类型的数组。这里 Condition 是 Spring 框架中的接口,用于定义条件检查逻辑。
  • []:表示成员变量是一个数组,可以包含多个 Condition 子类的引用。

、自定义的判断类必须实现condition接口

Condition 接口允许您定义自定义的条件来控制 Bean 的注册。通过实现 Condition 接口,您可以编写逻辑来决定在特定条件下是否应该注册某个 Bean。

在这个例子中,MyPropertyCondition 类实现了 Condition 接口,并在 matches 方法中检查环境变量 my.property 是否存在。如果存在,则返回 true,表示条件满足。

使用例图:(如果满足WindowsCondition)

三、内置condition类:

1. OnClassCondition

检查类路径是否存在某个类。

2. OnBeanCondition

检查容器中是否存在某个类型的 Bean。

3. OnPropertyCondition

检查系统属性或环境变量是否存在。

4. OnClassCondition

检查类路径中是否存在某个类。

5. OnJavaCondition

检查当前运行的 Java 版本。

6. OnWebApplicationCondition

检查是否运行在 Web 环境下。

7. OnClasspathResourceCondition

检查类路径中是否存在某个资源。

四、@ConditionalOnMission的判定bug

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值