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