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用于向容器中导入指定的类。

原文地址:https://www.cnblogs.com/zhangjianbing/p/10114148.html

时间: 2024-08-30 15:28:43

Spring源码窥探之:ImportSelector的相关文章

spring源码分析之@ImportSelector、@Import、ImportResource工作原理分析

1. @importSelector定义: /** * Interface to be implemented by types that determine which @{@link Configuration} * class(es) should be imported based on a given selection criteria, usually one or more * annotation attributes. * * <p>An {@link ImportSele

Spring源码窥探之:Spring IOC之@Value

1. 首先定义实体 /** * @author 70KG * @Title: Apple * @Description: 苹果实体 * @date 2018/10/22下午9:26 * @From www.nmyswls.com */ @Data public class Apple { @Value("${apple.color}") private String color; @Value("红富士") private String name; } 2. 属性文

Spring源码窥探之:@Profile

Spring为我们提供的多环境启动 1. 配置类,注入三个不同环境的数据源,并加上注解 /** * description: 以下准备了三套不同环境的数据源 * * @author 70KG * @date 2018/12/17 */ @Configuration public class MyConfig { @Bean @Profile("dev") public MySqlInfo mySqlInfoDev() { MySqlInfo mySqlInfo = new MySqlI

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

1. 导入驱动,连接池,jdbc和AOP的依赖 <!-- c3p0数据库连接池 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <!-- spring提供的jdbcTemplate模块 --> <depend

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

AOP入口代码分析 通过注解的方式来实现AOP1. @EnableAspectJAutoProxy通过@Import注解向容器中注入了AspectJAutoProxyRegistrar这个类,而它在容器中的名字是org.springframework.aop.config.internalAutoProxyCreator.2. AspectJAutoProxyRegistrar实现了ImportBeanDefinitionRegistrar接口,所以可以向容器中注册Bean的定义信息.3. 通过

spring源码分析(一)IoC、DI

创建日期:2016.08.06 修改日期:2016.08.07 - 2016.08.12 交流QQ:992591601 参考书籍:<spring源码深度解析>.<spring技术内幕> 参考文章:http://www.cnblogs.com/xing901022/p/4178963.html http://www.myexception.cn/program/1031276.html http://blog.csdn.net/qian_348840260/article/detai

Spring源码学习之一下载和导入

折腾了两天spring源码,一直都不能成功导入eclipse,今天早上上班前试了最后一次,总算BUILD SUCCESSFUL了,特此纪念一下. 一.下载spring源码,https://github.com/spring-projects/spring-framework/tree/v4.2.3.RELEASE.在linux mint系统里用git下载了一遍了,window系统的git用起来实在掣肘,所以直接下载zip压缩包了,解压. 二.更新jdk1.8_66,spring4需要用到jdk8

Spring源码下载

Spring已经将源码从SVN迁移到了Github,而且也改为基于Gradle的构建来构建项目,它取代了之前的ANT+Ivy系统,所以要构建Spring源码要先安装Github和Gradle. 首先假设各位已经将成功的安装了Github和Gradle了. Gradle下载之后要进行环境变量的配置:类似JDK的配置,这里配置GRADLE_HOME和path. 下面就是下载源码,并编译成eclipse可以识别的工程的步骤. 1.首先打开Github,输入命令cd e://Spring,即定位源码下载

spring 源码导入eclipse(sts)

一. 准备工作 1.下载安装sts(springsource推荐使用) 下载地址: http://www.springsource.org/downloads/sts-ggts 2.下载安装gradle, spring 源码构建加入了万恶的gradle 下载地址带详细说明: https://gradle.org/install/ 3. 安装配置完成验证 注意本人使用的 JDK 版本和 万恶的 Gradle 版本,必须是 1.6(亲测,4.0 build failure) 4.下载安装spring