知识点:
    1、@Import注解:

    1. - 用于配置文件类 MyConfig
    2. - 底层是一个数组。
    3. - 作用:可以创建导入单个或多个类的组件,例如:`@Import``({User.``class``, Employee.``class``})`

    每个组件默认的名称就是类名称,或者配置类中的方法名。
    2、getBeanNamesForType()方法:

    • String[] employeeBean = run.getBeanNamesForType(Employee.class); 当同类型的Bean有多个时,可以获取全部同类型的Bean实例,返回一个String[]数组。数组保存的是:类的实例。

    @Import注解源码:

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Import {
    
        /**
         * {@link Configuration @Configuration}, {@link ImportSelector},
         * {@link ImportBeanDefinitionRegistrar}, or regular component classes to import.
         */
        Class<?>[] value();
    
    }
    

    使用步骤:
    1、创建启动类:MainApplication
    2、创建两个Bean类。Employee、User。
    3、用注解@Configuration(proxyBeanMethods = true)@Bean 增加创建配置类MyConfig2。加入注解@Import({User.class, Employee.class})
    4、启动类中。两次获取容器里面的同个组件,比较地址是否为true。启动启动类验证。

    第一步:创建启动类:MainApplication
    image.png

    第二步:创建两个普通类
    image.png

    package com.wzy.boot.bean;
    
    public class Employee {
        private String employeeName;
        private Integer employeeId;
    
        //有参与无参构造方法
        //gettet与setter方法
    }
    
    package com.wzy.boot.bean;
    
    public class Employee {
        private String employeeName;
        private Integer employeeId;
    
        //有参与无参构造方法
        //gettet与setter方法
    }
    


    第三步:@Configuration(proxyBeanMethods = true)@Bean 增加创建配置类MyConfig2。加入注解@Import({User.class, Employee.class})
    image.png
    MyConfig类:**

    package com.wzy.boot.config;
    
    @Configuration(proxyBeanMethods = true)//配置文件类,为单实例
    public class MyConfig {
        @Bean //给容器添加组件
       public Employee getEmployee(){
           return new Employee("工程部",05);
       }
       @Bean
       public User getUser(){
            return new User("张三",25);
       }
    }
    

    MyConfig2类:

    package com.wzy.boot.config;
    
    @Import({User.class, Employee.class})//自动创建User与Employee组件
    @Configuration
    public class MyConfig2 {
    }
    

    第四步:通过启动类MyController 测试
    获取MyConfig类与MyConfig2类中的,User与Employee组件。

    package com.wzy.boot;
    
    /*@SpringBootConfiguration
    @EnableAutoConfiguration
    @ComponentScan("com.wzy.controller")*/
    @SpringBootApplication(scanBasePackages = "com.wzy.boot")//这是一个SpringBoot应用
    public class MainApplication {
        public static void main(String[] args) {
            //1.获取IOC容器
            ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
            //2.查看容器里的组件
            String[] names = run.getBeanDefinitionNames();
            for (String name : names) {
                System.out.println(name);
            }
    
            //获取所有的User组件
            String[] userBean = run.getBeanNamesForType(User.class);
            for (String s : userBean) {
                System.out.println(s);
            }
            //获取所有的Employee组件
            String[] employeeBean = run.getBeanNamesForType(Employee.class);
            for (String s : employeeBean) {
                System.out.println(s);
            }
    
        }
    }
    

    结果:
    image.png