@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 对象将被创建,否则不会创建。