作用:
1、注册多个
2、字符串必须是类的完整类型限定名(包.类名)
创建一个实现类:
package cn.cdulm.bean;
import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;
@Component
public class MyImportSelector implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
return new String[]{};
}
}
实现selectImports()方法,可以发现返回值是一个字符串数组;
创建一个Wife类(),类中除了给name赋值外不做任何操作:
package cn.cdulm.bean; import org.springframework.beans.factory.annotation.Value; public class Wife { @Value("老王吧") private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
传入Wife的类型限定名:
测试方法(此时不能通过类名字获取实例):
输出结果:
Wife - cn.cdulm.bean.Wife@5b12b668 Wife - 老王吧
发现成功输出,Wife类中没有使用@Component注入为Bean,也没有在javaConfig中配置注入Wife类为Bean,只在MyImportSelector类中传入了Wife的类型限定名,就成功将Wife在ioc容器中注册为Bean。