@Conditional 根据条件,选择是否将该bean注入到容器中
比如说:当我们在windows系统上时才注入该bean
首先需要自定义一个类,implements Condition
public class WinCondition implements Condition{/*ConditionContext:判断条件可以使用的上下文AnnotatedTypeMetadata(了解) 注解的信息,用了哪些注解* */public boolean matches(ConditionContext context,AnnotatedTypeMetadata metadata) {//判断是否是windows系统ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();/*Factorybean 把Java实例bean通过Factorybean注入到容器中BeanFactory 从容器中获取Java实例bean* *///获取当前环境变量(包含操作系统信息)Environment environment = context.getEnvironment();String name = environment.getProperty("os.name");if(name.contains("Windows")){return true;}return false;}}
然后在实体类上加上@Conditional注解
@Configuration
public class MainConfig6 {//条件判断,如果是win系统,才注入到容器中@Conditional(WinCondition.class)@Beanpublic Person person(){return new Person("zc3","27");}}
这样,在扫描到该类的时候会判断条件是否成立,选择是否注入。