@Import创建出来的组件,组件的名称为其全类名。这个注解可以用在将第三方的Bean注册到Spring Context。这种方式导入相对于Java Config来说更方便。
1
2
3
|
@Import({User.class, DBHelper.class})
|
@Import可以与ImportSelector结合使用。ImportSelector为一个接口,包含一个selectImports方法,该方法返回一个全类名数组,该数组代表的对象将会被注入到容器中。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public class MyImportSelector implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
// importingClassMetadata当前标注@Import注解类的所有注解信息
return new String[]{
"demo.xxx.XXX",
"demo.xxx.YYY",
};
}
}
|
@Import可以与ImportBeanDefinitionRegistrar结合使用,实现ImportBeanDefinitionRegistrar接口,在registerBeanDefinitions方法中直接通过beanDefinitionRegistry完成Bean的注入。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
BeanDefinitionRegistry beanDefinitionRegistry) {
/*
beanDefinitionRegistry:BeanDefinition注册类,把所有需要注入到容器中的bean,调用
beanDefinitionRegistry.registerBeanDefinition收工注册进来
*/
if (beanDefinitionRegistry.containsBeanDefinition("red")) {
beanDefinitionRegistry.registerBeanDefinition("red", new RootBeanDefinition(Weight.class));
}
}
}
|