文章目录

  • 一、@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详细使用说明相关推荐

  1. Spring 注解 @Qualifier 详细解析

    1. 概述 今天带你了解一下 Spring 框架中的 @Qualifier 注解,它解决了哪些问题,以及如何使用它.我们还将了解它与 @Primary 注解的不同之处. 2. 痛点 使用 @Autow ...

  2. spring注解之@Bean 的用法总结

    @Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里.添加的bean的id为方法名 1 基于xml方式bean使用回顾 2 注解@ ...

  3. spring注解详解与用法(总览)

    这篇文章收集了我写的所有的spring注解的详细说明与用法,点击可以跳转到对应文章,此文章会不断更新 spring注解详解与用法(1)最基础也是最常见的如下所示,详情点击这里 @Controller/ ...

  4. Spring高级之注解@Import注解、ImportSelector、ImportBeanDefinitionRegistrar详解(超详细)

    定义/作用 @Import注解只能作用在类上,一种使用场景是在spring注解驱动开发环境下与配置类配合使用的,其作用是引用其他配置类.使得我们可以和早起的基于XML配置文件开发那样.使用不同的配置类 ...

  5. SPRING注解驱动开发-雷神课程超详细笔记

    SPRING注解驱动开发-雷神课程超详细笔记 时间:2021-03-21 2022-04-06更新:最近翻起一年多前写的笔记复习,还是收获颇多,很多当时无法理解的知识现在慢慢能理解了,可能是工作一年的 ...

  6. 火眼金睛,看透Spring处理Import注解的全过程

    文章目录 一.前言 二.Enable前缀的注解上面有@Import注解 三.常见的四种Import注解用法(根据类Abc的不同类型) 四.Spring处理@Import注解的过程(全文重点,对应四种@ ...

  7. Spring注解之@Import用法解析

    前言:最近在回顾阅读Springboot源码时发现框架层面大量使用@Import注解,特别是Springboot自动装配机制更是大量使用该注解,搜索部分结果图如下.简单来说就是Springboot中用 ...

  8. java的 import注解_[java]一分钟学会spring注解之@Import注解

    今天主要从以下几方面来介绍一下@Import注解 @Import注解是什么 @Import的三种使用方式 1,@Import注解是什么 通过导入的方式实现把实例加入springIOC容器中 2,@Im ...

  9. Spring常用注解的详细介绍(包你学明白)

    目录 1. 为什么要使用注解? 2. 什么是注解? 3. 在Spring中使用注解的前期准备 4. @Component注解的详细介绍  5. @Value注解的详解介绍  6. @Autowired ...

最新文章

  1. 1.spring:helloword/注入/CDATA使用/其他Bean/null级联/p命名空间
  2. python【力扣LeetCode算法题库】1103- 分糖果 II
  3. 常用的Net Command
  4. Spring 的 BeanFactory 和 FactoryBean 傻傻分不清?
  5. 从软件工程看,语言只是工具
  6. Windows_API_函数 参考大全
  7. ODBG常用快捷键总结
  8. UI设计灵感|购物界面更有吸引力
  9. 搭建一个项目的准备工作
  10. linux集群启动脚本,Hadoop2.2.0集群启动和停止Shell脚本
  11. 手機短信阻擊中國化工項目
  12. numpy.argmin 使用
  13. R语言—简介、安装、包(package)的安装与加载
  14. 身份证算法15位转换为18位
  15. 5 步教你将 MRS 数据导入 DWS
  16. 兄弟Brother DCP-1519 驱动
  17. 爬取贝壳租房信息存储到mongoDB
  18. android 如何绕过签名校验
  19. Kafka SASL 安全认证
  20. XP系统启动时滚动条总是时间很长

热门文章

  1. mdl格式是什么软件生成的_Mac 上有什么好的视频格式转换软件?
  2. python中定义函数常用关键字_Python 中定义函数的关键字是 _________________ 。_学小易找答案...
  3. JVM实战与原理---Class文件结构
  4. xml 属性value换行显示_python 标准库之xml.etree.ElementTree
  5. 直播报名 | 零基础 零代码 AI智能营销应用现场教学
  6. python杂记-读取png图像文件头数据
  7. 趣学python3(2)-添加以数字文字形式使用下划线的功能,以提高可读性
  8. CF、FM、DSSM、DeepFM等这些推荐模型的原理以及使用场景是什么?
  9. 【深度学习】预训练的卷积模型比Transformer更好?
  10. 【职场】如何才能成功的创业,创业成功的本质是什么