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;
}
}
原文:https://www.cnblogs.com/mwss/p/11105110.html