@Import 注解可以普通类导入到 IoC容器中。

想要让一个普通类接受 Spring 容器管理,有以下方法

  • 使用 @Bean 注解
  • 使用 @Controller @Service @Repository @Component 注解标注该类,然后再使用 @ComponentScan 扫描包
  • @Import 方法,即现在这种方式

Student 类

public class Student {
}

配置类

@Configuration
@Import(Student.class)
public class ImportConfig { }

测试代码

    @Test
public void test7() {
ApplicationContext ctx = new AnnotationConfigApplicationContext(ImportConfig.class);
String[] beanDefinitionNames = ctx.getBeanDefinitionNames();
for (String name : beanDefinitionNames) {
System.out.println(name);
}
}

  

观察有没有 Student 产生的 bean

结果

 
bean成功创建

以上导入普通的 Java 并将其声明为一个 bean 功能在 4.2 之后才可以使用在 spring 4.2 以前,该注解,只能导入配置类,其功能与 <import /> 标签类似


ImportSelector

ImportSelector : 返回需要导入的组件的全类名数组

MySelector 类

public class MySelector implements ImportSelector {
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
return new String[]{"me.sjl.bean.Person"};
}
}

  

配置类

@Configuration
@Import(MySelector.class)
public class ImportConfig { }

  

测试代码不变,直接看结果

 
Person 类被加载

ImportBeanDefinitionRegistrar

BeanDefinitionRegistrar

public class MyBeanDefinitionRegistrat implements ImportBeanDefinitionRegistrar {

    @Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
BeanDefinition beanDefinition = new RootBeanDefinition(Person.class);
registry.registerBeanDefinition("PERSON", beanDefinition);
}
}

  

配置类

@Configuration
@Import(MyBeanDefinitionRegistrat.class)
public class ImportConfig { }

  

测试代码不变,直接看结果,看看是否有 PERSON 这个组件

 
PERSON 成功注册

最新文章

  1. c# 使用泛型类型作为参数
  2. LeetCode - 72. Edit Distance
  3. 深入理解JQuery插件开发
  4. PHP的学习--图解PHP引用
  5. Oracle 数据库对象
  6. [问题2014S06] 复旦高等代数II(13级)每周一题(第六教学周)
  7. MVC ASP.net流程 源代码分析
  8. C# is和as操作符
  9. MTK android flash配置
  10. 编写高效的Android代码
  11. (转)Mysql数据库读写分离配置
  12. EasyUI - 要引入的JS文件
  13. Vuex state 状态浅解
  14. javaScript额外笔记
  15. 使用Entity Framework Core访问数据库(Oracle篇)
  16. c#的几种数据结构
  17. 自己练习的一个小的demo的时候a标签关于href链接的问题
  18. RabbitMQ随笔
  19. SQL Server 2008重新保存表时出错
  20. mysql找到所有索引

热门文章

  1. mac 相关命令
  2. WORLD 快速线
  3. canvas-8clip.html
  4. javascript中加号(+)操作符的作用
  5. CentOS 7.0 下 Python 2.7 升级到 Python 3.5
  6. es6 语法 (对象扩展)
  7. swipper的一个小坑
  8. HTML笔记(适合新手入门)
  9. [CSS] Transitions动画效果(1)
  10. 使用JDBC连接MySQL数据库的一个基本案例