关于@Import
@Import
注解的作用和Spring XML配置中的<import/>标签相同,用来向IOC容器中注入实例,Spring 4.2 之前的版本只支持注入三种类的实例:@Configuration
类、ImportSelector
的实现类和 ImportBeanDefinitionRegistrar
的实现类,Sring 4.2后也可以将普通的Java类注入IOC容器。
用法示例
下面演示一下 @Import
注解的用法。@Import的三种用法主要包括:
- 通过class数组直接导入
- ImportSelector实现类【重点关注】
- ImportBeanDefinitionRegistrar实现类
定义普通Java类
1 | public class TestBean1 { |
通过class数组直接导入
1 |
|
ImportSelector实现类
创建一个 MyImportSelector
类并实现 ImportSelector
接口,并实现 selectImports()
方法,在这个方法中通过数组的方式,指定要导入哪些类的实例至IOC容器。
1 | public class MyImportSelector implements ImportSelector { |
在 @Import
注解中,导入MyImportSelector类。
1 |
|
ImportBeanDefinitionRegistrar实现类
编写一个ImportBeanDefinitionRegistrar实现类:
1 | public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar { |
并将这个实现类通过 @Import
注解导入。
1 |
|
单元测试
1 | (SpringRunner.class) |
输出结果:
1 | testBean1=com.lzumetal.springboot.annotation.bean.TestBean1@150ebdd--我是TestBean1 |