首页 > IT职业 > IT图书 > @Import 注解
想要让一个普通类接受 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 : 返回需要导入的组件的全类名数组
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 类被加载
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 成功注册
作者:宿命99
链接:https://www.jianshu.com/p/afd2c49394c2
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/834/viewspace-2818538/ ,如需转载,请注明出处,否则将追究法律责任。