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的更多相关文章

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

    1. @importSelector定义: /** * Interface to be implemented by types that determine which @{@link Config ...

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

    AOP入口代码分析 通过注解的方式来实现AOP1. @EnableAspectJAutoProxy通过@Import注解向容器中注入了AspectJAutoProxyRegistrar这个类,而它在容 ...

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

    1. 导入驱动,连接池,jdbc和AOP的依赖 <!-- c3p0数据库连接池 --> <dependency> <groupId>c3p0</groupId ...

  4. Spring源码窥探之:AOP注解

    AOP也就是我们日常说的@面向切面编程,看概念比较晦涩难懂,难懂的是设计理念,以及这样设计的好处是什么.在Spring的AOP中,常用的几个注解如下:@Aspect,@Before,@After,@A ...

  5. Spring源码窥探之:@Profile

    Spring为我们提供的多环境启动 1. 配置类,注入三个不同环境的数据源,并加上注解 /** * description: 以下准备了三套不同环境的数据源 * * @author 70KG * @d ...

  6. Spring源码窥探之:Spring AOP初步使用

    AOP即面向切面编程.它的底层实际是用了spring的动态代理,具体是JDK的代理还是CGLIB的代理,就视情况而定了.本博客园仅仅作为平时记录,显得有些杂乱无章,如果想了解动态代理,设计模式,请访问 ...

  7. Spring源码窥探之:@Value

    1. 首先定义实体 /** * @author 70KG * @Title: Apple * @Description: 苹果实体 * @date 2018/10/22下午9:26 * @From w ...

  8. Spring源码窥探之:BeanPostProcessor

    Spring的Bean后置处理器 1. 实体类 /** * @author 70KG * @Title: Train * @Description: * @date 2018/7/23下午11:31 ...

  9. Spring源码窥探之:Spring AOP初步

    AOP(Aspect Oriented Programming):即我们常说的面向切面编程. 什么是AOP?AOP是在我们原来写的代码的基础上,进行一定的包装,比如在方法执行前.方法返回后.方法抛出异 ...

随机推荐

  1. idea2019.2激活码到2020.7.1【已失效】,有另外的

    ZKVVPH4MIO-eyJsaWNlbnNlSWQiOiJaS1ZWUEg0TUlPIiwibGljZW5zZWVOYW1lIjoi5o6I5p2D5Luj55CG5ZWGIGh0dHA6Ly9pZ ...

  2. 08 Spring框架的概念、优势、体系结构、耦合性和IOC(反转控制)

    1.spring介绍 Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control: 反转控制)和 AOP(Aspect ...

  3. 利用Idea查看类的继承关系图

    1.将光标定位到你想查看的类,点击右键,选择 Diagrams,其中有 show 和 show ... Popup,只是前者新建在标签页内,后者以浮窗的形式展示 可得,如下图所示. 查看图中的Appl ...

  4. SpringBoot项目使用RedisTemplate设置序列化方式

    前端时间新项目使用SpringBoot的RedisTemplate遇到一个问题,先简单描述一下问题:不同项目之间redis共用一个,但是我们新项目读不到老项目存储的缓存.新项目搭建的时候没有跟老项目使 ...

  5. Arm-Linux 移植 Nginx

    有关博客: <Windows 编译安装 nginx 服务器 + rtmp 模块>.<Ubuntu 编译安装 nginx>.<Arm-Linux 移植 Nginx> ...

  6. python爬虫-喜马拉雅_晚安妈妈睡前故事

    这里先说下思路: 1.首先要获取当前书的音频信息 '''获取当前书的音频信息''' all_list = [] for url in self.book_url: r = requests.get(u ...

  7. java容易混淆的概念

    容易混淆的内容 1.JVM内存模型 2.Java内存模型 3.Java对象模型 JVM内存模型 1.堆 2.虚拟机栈 3.本地方法栈 4.程序计数器 5.方法区 Java内存模型 Java堆和方法区的 ...

  8. 学习笔记之MongoDB

    MongoDB - Wikipedia MongoDB is a cross-platform document-oriented database program. Classified as a  ...

  9. 【雅思】【绿宝书错词本】List25~36

    List 25 ❤arable a.可耕作的 n.耕地 ❤congested a.拥挤不堪的:充塞的 ❤split v.(使)分裂,分离:(被)撕裂:裂开:劈开:分担,分享n.裂口:分化 ,分裂 ❤n ...

  10. Fortify漏洞之 Privacy Violation(隐私泄露)和 Null Dereference(空指针异常)

    继续对Fortify的漏洞进行总结,本篇主要针对 Privacy Violation(隐私泄露) 和 Null Dereference(空指针异常) 的漏洞进行总结,如下: 1.1.产生原因: Pri ...