@Conditional注解的作用和示例

@Conditional 注解用于基于给定条件来决定是否创建一个特定的 bean。这个注解可以应用在 @Configuration 类或者带有 @Bean 注解的方法上。

@Conditional 注解需要一个实现了 Condition 接口的类作为参数,该类实现了 matches 方法,该方法根据给定的条件返回 true 或 false。

以下是一个简单的示例,演示了如何使用 @Conditional 注解来根据条件来创建特定的 bean:

@Configuration
public class AppConfig {

    @Bean
    @Conditional(MyCondition.class)
    public MyBean myBean() {
        return new MyBean();
    }
}

在上面的示例中,@Conditional 注解应用在了 myBean() 方法上,并将 MyCondition.class 作为参数传递。在这个示例中,当 MyCondition 类的 matches() 方法返回 true 时,才会创建 MyBean 对象。

下面是一个简单的 Condition 实现示例:

public class MyCondition implements Condition {

    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        String property = context.getEnvironment().getProperty("my.property");
        return property != null && property.equals("true");
    }
}

在上面的示例中,MyCondition 类实现了 Condition 接口,实现了 matches 方法,该方法检查环境中是否存在名为 my.property 的属性,并且该属性的值是否为 true。如果是,则返回 true,否则返回 false。

在上面的示例中,如果属性 my.property 的值为 true,则 MyBean 对象将被创建,否则不会创建。