当前位置: 代码迷 >> 综合 >> 网课学习笔记(五、@Conditional)
  详细解决方案

网课学习笔记(五、@Conditional)

热度:75   发布时间:2023-12-12 12:13:40.0

@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");}}

这样,在扫描到该类的时候会判断条件是否成立,选择是否注入。

  相关解决方案