2019.6.28 Spring注解
6.28
-
Spring提供了获取操作系统的信息:
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Myconfig.class); ConfigurableEnvironment contextEnvironment = (ConfigurableEnvironment) applicationContext.getEnvironment(); /*对应jvm参数中的os.name*/ String ospropertyname = contextEnvironment.getProperty("os.name"); System.out.println(ospropertyname);
-
Conditional根据条件判断是否将bean注册到容器中
-
需要将注解bean的方法加上@Conditional
-
@Conditiona接受一个Condition类型的CLass数组,
-
需要写一个条件类来实现Conditional接口里面的matches
-
matches的方法形参是ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata
public class Os implements Condition { @Override public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) { /*获取ioc使用的beanfactory*/ ConfigurableListableBeanFactory beanFactory = conditionContext.getBeanFactory(); /*获取bean定义的注册类*/ BeanDefinitionRegistry registry = conditionContext.getRegistry(); Environment environment = conditionContext.getEnvironment(); String ospropertyname = environment.getProperty("os.name"); /*判断容器中是否含有bean*/ //boolean person = registry.containsBeanDefinition("person"); if(ospropertyname.contains("window")){ return true; } return false; } }
-