@Import注解的前提必备知识
@Import注解的本质就是Bean,它快速导入的方式实现把实例加入spring的IOC容器中,交给Spring 进行统一管理操作。
注解的三种用法
1、直接填class数组方式
@Import({类名.class, 类名.class, 类名.class})
2、ImportSelector方式【重点】
public class MySelectImports implements ImportSelector {
/**
* 返回的值就是注册的Bean,在后续配置文件中执行使用注解使用即可
* 参数: AnnotationMetadata表示当前被@Import注解给标注的所有注解信息
*/
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
return new String[]{"com.aop.openfeign.imbean.MyAopImportTwo"};Bean
}
}
3、ImportBeanDefinitionRegistrar方式(自定义方式注入Bean)
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
BeanDefinitionRegistry registry) {
//指定bean定义信息(包括bean的类型、作用域...)
RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(MyAopImportThree.class);
//注册一个bean指定bean名字(id)
registry.registerBeanDefinition("MyAopImportThree",rootBeanDefinition);
}
}
以上三种方式将注册的Bean,最后统一交给Spring IOC进行管理操作。
/**
* @Import:
* 实现将实例导入Spring IOC容器中
*/
@Configuration
@Import({MyAopImport.class, MySelectImports.class, MyImportBeanDefinitionRegistrar.class})
public class MyImportConfig {
}
此时我们交给Spring的Bean直接使用即可!