spring之Condition判断操作系统(部分代码)
类
/**
* 判断是否linux系统
*/
public class LinuxCondition implements Condition {
/**
* ConditionContext:判断条件能使用的上下文(环境)
* AnnotatedTypeMetadata:注释信息
*/
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
// TODO是否linux系统
//1、能获取到ioc使用的beanfactory
ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
//2、获取类加载器
ClassLoader classLoader = context.getClassLoader();
//3、获取当前环境信息
Environment environment = context.getEnvironment();
//4、获取到bean定义的注册类
BeanDefinitionRegistry registry = context.getRegistry();
if(property.contains("linux")){
return true;
}
return false;
}
}
注解
@Conditional({LinuxCondition.class})
@Bean("linus")
public Person person(){
return new Person("linus", 48);
}
test
@Test
public void test(){
//获取环境变量
Environment environment = applicationContext.getEnvironment();
String property = environment.getProperty("os.name");
System.out.println(property);
String[] beanDefinitionNames = applicationContext.getBeanNamesForType(Person.class);
for (String name:beanDefinitionNames) {
System.out.println(name);
}
Map<String, Person> beansOfType = applicationContext.getBeansOfType(Person.class);
System.out.println(beansOfType);
}