欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

Spring注解@Import详细使用说明

发布时间:2025/1/21 javascript 89 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Spring注解@Import详细使用说明 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

      • 一、@Import解释
      • 二、@Import有三种使用方法
        • 1、直接填class数组方式
        • 2、实现ImportSelector接口
        • 3、实现ImportBeanDefinitionRegistrar接口

写在前面:
我是「境里婆娑」。我还是从前那个少年,没有一丝丝改变,时间只不过是考验,种在心中信念丝毫未减,眼前这个少年,还是最初那张脸,面前再多艰险不退却。
写博客的目的就是分享给大家一起学习交流,如果您对 Java感兴趣,可以关注我,我们一起学习

前言:@Import作用是将某个类或者第三方jar包中类加载到Spring容器中,以便我们能在容器中使用。

一、@Import解释

  • @Import只能用在类上
  • @Import通过快速导入的方式实现把实例加入spring的IOC容器中
  • @Import注解可以用于导入第三方包

二、@Import有三种使用方法

@Import的三种用法:

1、直接填class数组方式

直接填对应的class数组,class数组可以有0到多个

@Import({Person.class,Car.class) @Configuration public class MyConfig { }

启动工程运行结果:

import的bean都将加入到spring容器中,这些在容器中bean名称是该类的全类名

2、实现ImportSelector接口

这种方式要实现ImportSelector接口。

创建MyImportSelector并实现ImportSelector接口

public class MyImportSelector implements ImportSelector {@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {Set<String> annotationTypes = importingClassMetadata.getAnnotationTypes();return new String[]{"com.sl.entity.Car"};} }

将此实现类MyImportSelector添加到容器中

@Import({Person.class,MyImportSelector.class}) @Configuration public class MyConfig { }

启动工程运行结果:

实现接口的selectImports方法中需要注意三点

  • 返回值: 实际上要导入到容器中的组件全类名
  • 参数: AnnotationMetadata表示当前被@Import注解给标注的所有注解信息
  • 需要注意的是selectImports方法可以返回空数组但是不能返回null,否则会报空指针异常!

3、实现ImportBeanDefinitionRegistrar接口

创建MyImportBeanDefinitionRegistrar接口

public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {@Overridepublic void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(Car.class);registry.registerBeanDefinition("car",rootBeanDefinition);} }

将此实现类MyImportBeanDefinitionRegistrar添加到容器中

@Import({Person.class,MyImportSelector.class,MyImportBeanDefinitionRegistrar.class}) @Configuration public class MyConfig { }

启动工程运行结果:

registerBeanDefinitions参数解释:

  • annotationMetadata 和之前的ImportSelector参数一样都是表示当前被@Import注解给标注的所有注解信息
  • registry第二个参数表示用于注册定义一个bean

以上三种用法方式皆可混合在一个@Import中使用,特别注意第一种和第二种都是以全类名的方式注册,而第三中可自定义方式

总结

以上是生活随笔为你收集整理的Spring注解@Import详细使用说明的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。