在使用注解创建bean对象前,进行条件判断,如果true,则创建对象,如果false,则不创建对象
步骤:
1.定义一个实现了org.springframework.context.annotation.Condition接口的实现类MyCondition;
重写matches方法,在该方法内定义条件,返回true/false
2.使用该实现类
@Conditional(MyCondition.class)
实例:
package com.woniu.conditions;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.annotation.MergedAnnotations;
import org.springframework.core.env.Environment;
import org.springframework.core.io.ResourceLoader;
import org.springframework.core.type.AnnotatedTypeMetadata;
public class myCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
Environment environment = context.getEnvironment();
String property = environment.getProperty("os.name");
if(property.contains("Window")){
return true;
}
return false;
}
@Bean("bill")
@Conditional(myCondition.class)
public User bill(){
User user = new User();
user.setName("bill");
return user;
}
}