Spring注解04 @Conditional 按条件注入bean

@Conditional({Condition}) : 按照一定的条件进行判断,满足条件给容器中注册bean

  • 配置类
@Configuration
@ComponentScan(value = "com.tommy", useDefaultFilters = false)
public class MainConfigConditional {

    @Bean(value = "linux")
    @Conditional(LinuxConditional.class)
    public Person person01() {
        System.out.println("linux person 初始化....");
        return new Person("jm", 36, "服务器端开发");
    }

    @Bean(value = "window")
    @Conditional(WindowsCoditional.class)
    public Person person02() {
        System.out.println("window person 初始化....");
        return new Person("jb", 16, "前端开发");
    }
}
  • 条件类 LinuxConditional.java
public class LinuxConditional implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        final Environment environment = context.getEnvironment();
        final String property = environment.getProperty("os.name");
        //WindowsCoditional.java中,只需要判断 Windows
        if (property.contains("linux")) {
            return true;
        }
        return false;
    }
}

测试类

 public class IOCTestConditional {
    @Test
    public void testImport() {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigConditional.class);
        System.out.println("IOC容器创建完成...");
        final Person bean = applicationContext.getBean(Person.class);
        System.out.println("bean "+bean);
    }
}

运行结果

window person 初始化....
IOC容器创建完成...
bean Person(name=jb, age=16, nickName=前端开发)

Process finished with exit code 0

如果需要修改当前的操作系统:
VM options
-Dos.name=linux

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981阅读 16,023评论 2 11
  • 西伯利亚的海鸥 每个冬季往南飞 追寻通体红亮的 五月的风 见到心目中的火炬 她是多么的雀跃 用羽翅轻拍着海面 溅起...
    月亭阅读 393评论 10 14
  • 一直有个愿望 我们回到最初的美好 牵着你的手 迎着晨光 踏上古城的苍老 向四面的游人 印下第一缕微笑 午间的慵懒 ...
    一方干果阅读 117评论 0 1
  • 11月就这样悄然无息的过去了,2018年已经走到了最后还有最后一个月,要跟我们挥挥手说再见了,我们将迎来2...
    陈秋羽_内心力量阅读 731评论 0 0
  • 静静地数数心跳 感受指间上的回响 干涩的眼睛 怎么也闭不上 一眨一眨等时光 睡吧,做一个梦 飞到天上 触那最美的星光
    sunny77酱阅读 212评论 0 0