我们再读源码时常常发现这个注解,近期在读dubbo源码 就使用到了此注解,究竟有什么用,在spring boot项目中尤其多
实现将打了@Import的注解注入到容器,以及@Import指定的类注入到容器
1.定义一个打上了Import的类
/** * student和BeanRegisterConfig都会初始化进入容器 student的beanName为类的全名称 */ @Import({Student.class}) public class BeanRegisterConfig { }
2.main测试
public static void main(String[] args) { AnnotationConfigApplicationContext applicationContext=new AnnotationConfigApplicationContext(BeanRegisterConfig.class); //这里的参数代表要做操作的类 String [] names=applicationContext.getBeanDefinitionNames(); for (String name: names) { System.out.println(name); } }
3.输出
1.定义一个ImportSelector类
public class BeanRegisterImportSelector implements ImportSelector { /** * * @param importingClassMetadata 注解元数据 * @return 返回值为要初始化的类的全名称 */ @Override public String[] selectImports(AnnotationMetadata importingClassMetadata) { for (String typeName : importingClassMetadata.getAnnotationTypes()) { System.out.println("typeName" + typeName); } //告诉容器初始化importtest.bean.Student return new String[]{"importtest.bean.Student"}; } }
1.定义一个打上了Import的类