Import
注解用来导入Bean对象到Spring容器中,最常用就是导入被 @Configuration
标识的配置类。@Import
注解允许导入 @Configuration
类、ImportSelector
、ImportBeanDefinitionRegister
的实现类。
使用
导入普通类
定义 Car
类,然后通过 @Import
注解把 Car
导入Spring容器中,无须手动注入它。
public class Car {
}
定义配置类,使用 @Import
注解标识。注意:即时配置类没有被 @Configuration
标识,被 @Import
注解标识的类也会被Spring当成配置类处理。
@Import(Car.class)
public class AccountConfig3 {
}
测试
public class AnnotationConfigTest {
public static void main(String[] args) throws IOException {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AccountConfig3.class);
Car bean = context.getBean(Car.class);
System.out.println(bean);
}
}
ImportSelector的方式导入
public class TestImportSelector implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
return new String[]{
"com.test.annotationConfig.entity.TestBean1"};
}
}
ImportBeanDefinitionRegistrar的方式导入
public class TestImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry, BeanNameGenerator importBeanNameGenerator)