当前位置: 首页 > news >正文

@Import 导入bean对象

@Import 导入bean对象

被@Import注解导入的类会被Spring注册到IOC容器中,成为IOC容器管理的bean对象。

@Import 常见的导入形式

  • 导入类
  • 导入ImportSelector接口实现类

1). 导入普通类

//Common.java
public class Common {}//===============================
@Import(Common.class) //将普通类导入IOC容器中
@SpringBootTest
class ImportQuickstartApplicationTests {@Autowiredprivate Common common;@Testvoid testCommon() {System.out.println(common);}   
}

运行测试方法,控制台日志输出如下:

在这里插入图片描述

@Import注解导入Common类成为IOC容器中的bean对象。

2). 导入配置类

//Config.java
@Configuration
public class Config {@Beanpublic ConfigBean1 getConfigBean1() {return new ConfigBean1();}@Beanpublic ConfigBean2 getConfigBean2() {return new ConfigBean2();}}//====================================
//ConfigBean1.java
public class ConfigBean1 {}//====================================
//ConfigBean2.java
public class ConfigBean1 {}//=====================================
@Import(Config.class) //将配置类导入IOC容器中
@SpringBootTest
class ImportQuickstartApplicationTests {@Autowiredprivate Config config;@Autowiredprivate ConfigBean1 configBean1;@Autowiredprivate ConfigBean2 configBean2;@Testvoid testConfig() {System.out.println(config);System.out.println(configBean1);System.out.println(configBean2);}}

执行测试方法,控制台输出日志如下:

在这里插入图片描述

@Import注解会将配置类及配置类中声明的bean对象一并导入IOC容器成为IOC容器中的bean对象。

3).导入ImportSelector接口实现类

在这里插入图片描述

观察ImportSelector接口中待实现的selectImports方法,我们发现该方法的返回值返回的字符串数组是我们要导入IOC容器中的类的全类名。 也就是说这个方法的返回值中封装着我们要导入IOC容器的bean对象。

//ImportSelectorDemo.java
public class ImportSelectorDemo implements ImportSelector {@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {return new String[] {"com.ryuki.importquickstart.Common","com.ryuki.importquickstart.config.Config"};}
}//================================
@Import(ImportSelectorDemo.class) //导入ImportSelector接口实现类
@SpringBootTest
class ImportQuickstartApplicationTests {@Autowiredprivate Common common;@Autowiredprivate Config config;@Autowiredprivate ConfigBean1 configBean1;@Autowiredprivate ConfigBean2 configBean2;@Testvoid testConfig() {System.out.println(common);System.out.println(config);System.out.println(configBean1);System.out.println(configBean2);}}

执行测试方法,控制台输出如下:

在这里插入图片描述

需要注意的是:

  • @Import导入ImportSelector接口实现类时,不会将该类交由Spring IOC管理,而是通过其selectImports()方法动态导入其他类。
  • @Import注解的生效前提:所在类必须被Spring容器管理

通常情况下,我们会将该注解进一步封装为@EnableXxxx开头的注解,使得使用方无需关注需要导入那些bean对象。

由Spring IOC管理**,而是通过其selectImports()方法动态导入其他类。

  • @Import注解的生效前提:所在类必须被Spring容器管理

通常情况下,我们会将该注解进一步封装为@EnableXxxx开头的注解,使得使用方无需关注需要导入那些bean对象。

http://www.dtcms.com/a/415264.html

相关文章:

  • JavaScript 介绍
  • AiNiee - AI 翻译工具
  • 【Qt6项目转Qt5项目的一些API设置】
  • 音乐网站开发环境描述要建设一个网站需要准备些什么
  • display ip interface brief 概念及题目
  • asp网站整站下载器网站建设入什么科目
  • 网站建设国内排行如何做网站 知乎
  • 网站关于 模板三亚网站优化
  • Nginx部署vue以及转发配置记录
  • Elasticsearch - 分布式搜索与分析引擎
  • 网站开发者模式下载视频设计网站做多大合适
  • wordpress建企业商城南宁网站的优化
  • 通才机器人策略中的捷径学习:数据集多样性和碎片化的作用
  • 【轮播图】HTML+CSS+JavaScript实现轮播图
  • Low-Overhead Sensing RS Design for Integrated Sensing and Communication (ISAC)
  • 如何快速收录一个网站的信息网页设计与制作作业成品免费
  • MyEclipse在高分辨率显示屏上图标显示太小的解决方案
  • 网站 多语言处理wordpress搜索表单
  • Python 2025:物联网与边缘计算的智能融合新纪元
  • 小迪安全v2023学习笔记(九十讲)—— 小程序篇反编译外在主包分包配置泄露算法逆向未授权
  • 机器学习模型中异常样本、特征的三种常见分类与鉴别方法
  • 有口碑的常州网站建设建设网银怎么提高转账限额
  • 湖南响应式网站哪里有58同城怎么发布信息
  • 《前端开发中常用的快捷键大全》
  • 跳舞游戏做的广告视频网站平度建设局网站
  • 众筹网站建设公司金蝶官网首页
  • 智能汽车安全基石:通过CAS密钥管理系统实现全周期密钥管理与固件签名
  • 基于Python CNN推荐的电影资讯App软件的设计与实现
  • 如何识别网站的建站程序做网站的客户多吗
  • 找人做网站推广wordpress二次开发手册chm