spring import

@Import的三种用法主要包括:

1、直接填class数组方式-容器会自动注册这个组件,id默认是全类名
2、实现接口ImportSelector方式【重点】 -返回需要导入的组件的全类名数组,springboot底层用的特别多【重点 】
3、实现接口ImportBeanDefinitionRegistrar方式-手动注册bean到容器

@Import只能用在类上

ImportSelector方式

1
2
3
4
5
6
7
8

public class Myclass implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata annotationMetadata) {
return new String[]{"com.yc.Test.TestDemo3"};
}
}

ImportBeanDefinitionRegistrar方式

1
2
3
4
5
6
7
8
9
10
11
12

public class Myclass2 implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry beanDefinitionRegistry) {
//指定bean定义信息(包括bean的类型、作用域...)
RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(TestDemo4.class);
//注册一个bean指定bean名字(id)
beanDefinitionRegistry.registerBeanDefinition("TestDemo4444",rootBeanDefinition);
}
}