spring之Condition判断操作系统

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

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章