一、创建类,实现Condition接口
package com.example.config;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.env.Environment;
import org.springframework.core.type.AnnotatedTypeMetadata;
public class MyCondition implements Condition {
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
Environment env=conditionContext.getEnvironment();
if(env.containsProperty("tju.name")&&env.containsProperty("tju.age")){
return true;
}
return false;
}
}
二、和@Bean注解同时使用@Conditional注解,并引入上述类
@Configuration
public class MyConfig {
@Bean
@Conditional(MyCondition.class)
public Student getStudent(@Value("${tju.name}")String name,@Value("${tju.age}")int age){
return new Student(name,age);
}
}
三、说明:
如果application.properties中配置了tju.name和tju.age这两个属性,则认为满足条件,就会使用application.properties中的tju.name和tju.age装配Student类的bean。否则不会装配类型为Student的bean