知识点:
    1、run.containsBean(); 判断容器中是否有某个组件。
    例如:boolean getEmployee = run.containsBean("getEmployee");
    2、@ConditionalOnBean(name = "getEmployee") 判断是否存在getEmployee组件,存在才能执行。
    用法:一般用于配置类上或者配置类的方法上。
    用在方法上:条件为true方法才有效,否则不生效。
    用在配置类上:条件为true,配置类中的所有的方法才有效,否则不生效。
    3、@ConditionalOnMissingBean(name = "getEmployee")getEmployee
    不存在时,方法才能生效。
    用法:一般用于配置类上或者配置类的方法上。

    3.4、@Conditional注解,条件判断注解 - 图1

    第一步:配置文件 MyConfig 类中的 getUser 方法上加入@ConditionalOnBean(name = "getEmployee1")。getEmployee1存在时 getUser 才有效。

    1. package com.wzy.boot.config;
    2. @Configuration(proxyBeanMethods = false)
    3. public class MyConfig {
    4. @Bean
    5. public Employee getEmployee(){
    6. return new Employee("工程部",05);
    7. }
    8. @ConditionalOnBean(name = "getEmployee1")
    9. @Bean
    10. public User getUser(){
    11. User user = new User();
    12. user.setName("张三");
    13. user.setAge(25);
    14. user.setEmployee(getEmployee());//通过set方法注入,依赖getEmployee()
    15. return user;
    16. }
    17. }

    第二步测试:

    1. package com.wzy.boot;
    2. @SpringBootApplication(scanBasePackages = "com.wzy.boot")
    3. public class MainApplication {
    4. public static void main(String[] args) {
    5. //1.获取IOC容器
    6. ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
    7. //2.查看容器里的组件
    8. String[] names = run.getBeanDefinitionNames();
    9. for (String name : names) {
    10. System.out.println(name);
    11. }
    12. boolean getEmployee = run.containsBean("getUser");
    13. System.out.println(getEmployee);//false
    14. }
    15. }