Spring源码窥探之:ImportSelector

Posted 在谷歌上百度

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring源码窥探之:ImportSelector相关的知识,希望对你有一定的参考价值。

1. 编写实现ImportSelector的类

/**
 * @author 70KG
 * @Title: SelectImportBean
 * @Description:
 * @date 2018/7/22下午4:59
 * @From www.nmyswls.com
 */
public class SelectImportBean implements ImportSelector {

    @Override
    public String[] selectImports(AnnotationMetadata annotationMetadata) {
        return new String[]{"com.nmys.story.springCore.springioc.importBean.Fish","com.nmys.story.springCore.springioc.importBean.Pig"};
    }

}

2. 编写配置类

/**
 * @author 70KG
 * @Title: Config
 * @Description:
 * @date 2018/7/22下午4:41
 * @From www.nmyswls.com
 */
@Configuration
// 会自动向容器中加入实例化后的bean,默认的id是bean的全类名
@Import(value = {Dog.class, Cat.class, SelectImportBean.class})
public class ImportBeanConfig {


}

3. 测试类

public class Test01 {

    @Test
    public void test() {

        // IOC容器创建(容器类似一个Map)
        AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ImportBeanConfig.class);

        System.out.println("IOC容器初始化完成。。。。。");

        // 从容器中获取所有的bean的ID
        String[] definitionNames = ac.getBeanDefinitionNames();

        for (String name : definitionNames) {
            System.out.println("------->" + name);
        }

    }
}

4. 测试结果

IOC容器初始化完成。。。。。
------->org.springframework.context.annotation.internalConfigurationAnnotationProcessor
------->org.springframework.context.annotation.internalAutowiredAnnotationProcessor
------->org.springframework.context.annotation.internalRequiredAnnotationProcessor
------->org.springframework.context.annotation.internalCommonAnnotationProcessor
------->org.springframework.context.event.internalEventListenerProcessor
------->org.springframework.context.event.internalEventListenerFactory
------->importBeanConfig
------->com.nmys.story.springCore.springioc.importBean.Dog
------->com.nmys.story.springCore.springioc.importBean.Cat
------->com.nmys.story.springCore.springioc.importBean.Fish
------->com.nmys.story.springCore.springioc.importBean.Pig

5. ImportSelector用于向容器中导入指定的类。

以上是关于Spring源码窥探之:ImportSelector的主要内容,如果未能解决你的问题,请参考以下文章

Spring源码窥探之:@Profile

Spring源码窥探之:注解方式的AOP原理

Spring源码窥探之:声明式事务

RocketMQ源码分析之从官方示例窥探:RocketMQ事务消息实现基本思想

iOS开发之窥探UICollectionViewController

Java并发之AQS源码分析