Spring注解——使用@Import给容器中快速导入实例

2.修改 BeanConfig 配置类,即增加 @Import 注解将 Student 导入到容器中。

在 App05 的 main 方法中将容器中的实例名都打印出来:

运行效果:

输出结果已经出现了 Student 实例,并且是全类名,说明 @Import 注解默认是用全类名作为容器中的实例名。

@Import 注解的属性 value 是一个数组类型,也就是说可以使用 @Import 导入多个类。

3.在 @Import 注解里提到了 ImportSelector 接口,实现这个接口也可以导入类。再创建一个 Teacher 类:

创建 CustomImportSelector 实现 ImportSelector 接口:

1、通过 AnnotationMetadata 可以取得当前标注 @Import 注解的类上的所有注解信息;

2、返回值就是需要注册到容器的全类名;

3、方法不能返回 null,否则会报空指针异常,但是可以返回一个空的字符串数组。

修改 BeanConfig 配置类,在 @Import 注解中增加 CustomImportSelector.class:

运行效果:

4.除了 ImportSelector 接口,还有一个 ImportBeanDefinitionRegistrar 接口也能实现类似功能。再创建一个 Worker 类:

创建 CustomImportBeanDefinitionRegistrar 实现 ImportBeanDefinitionRegistrar 接口:

1、AnnotationMetadata 可以当前类的注解信息;

2、BeanDefinitionRegistry 是 bean 定义注册类,把需要注册到容器的类,通过调用 BeanDefinitionRegistry 的 registerBeanDefinition()方法手动注册;

3、RootBeanDefinition 是 BeanDefinition 的一个实现类,用来定义 bean。

修改 BeanConfig 配置类,在 @Import 注解中增加 CustomImportBeanDefinitionRegistrar.class:

运行效果:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180623G1QIF500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券