试图讲清楚spring的依赖注入

news/2025/1/2 19:26:52/

首先声明,依赖注入和反转容器是密不可分的,二者相互依存,依赖注入是实现反转控制的一种方式,允许对象在创建时将其依赖项提供给它,而不是在内部创建这些依赖项。这样可以增强代码的可测试性和可维护性。

spring依赖注入的几种方式:

构造器注入

通过构造器函数传递依赖项

setter注入

通过 setter 方法设置依赖项。

注解方式

使用 @Autowired 注解自动注入依赖。

XML配置

通过 XML 文件定义 Bean 的依赖关系。

依赖注入的“好老板”——控制反转容器ApplicationContext

四种方式都需要通过创建 ApplicationContext 对象来启动 Spring 的控制反转(IoC)容器。ApplicationContext 管理整个应用的 Bean 生命周期,并负责依赖注入。可以通过不同的实现类(如 ClassPathXmlApplicationContextAnnotationConfigApplicationContext)来加载配置

ApplicationContext 是 Spring 框架的核心接口,返回的是 Spring IoC 容器。它负责管理对象的创建、配置和生命周期。在使用 ApplicationContext 时,你通常会得到一个实现了该接口的对象,比如 ClassPathXmlApplicationContext

ApplicationContext的实现接口

ClassPathXmlApplicationContext

使用 ClassPathXmlApplicationContext 时,需要传入 XML 配置文件的路径,例如:new ClassPathXmlApplicationContext("applicationContext.xml")。它会读取类路径下的 XML 文件,并根据其中的配置创建相应的 Bean 实例。

FileSystemXmlApplicationContext

FileSystemXmlApplicationContextApplicationContext 的一种实现,专门用于从文件系统加载 XML 配置文件,适合在项目外部的 XML 配置

例如:ApplicationContext context = new FileSystemXmlApplicationContext("path/to/applicationContext.xml");

AnnotationConfigApplicationContext

例如:ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);


http://www.ppmy.cn/news/1528864.html

相关文章

南大通用数仓-GCDW-学习-03-用户管理

目录 一、环境信息 二、概念 三、用户相关系统表 1、CLOUD.USER (1)字段解释 (2)示例 2、CLOUD.USER_CHECK (1)字段解释 (2)示例 四、实操 1、新建用户 (1&a…

RK3568笔记六十一:MIPI摄像头应用程序编写

若该文为原创文章,转载请注明原文出处。 使用V4L2方式采集摄像头。 使用正点原子的例程测试没通过,后面使用一口君的测试采集到了摄像头 记录过程。 详细参考Camera | 4.瑞芯微平台MIPI摄像头应用程序编写-CSDN博客 一、介绍 V4L2设备驱动框架向应用层提供了一套统一、标…

如何在Mac上查看剪贴板历史记录

重点摘要 macOS 内建的剪贴簿查看器可以透过 Finder 存取,但只能显示最近一次复制的内容,而且重新开机后就会清除。若要更进阶的剪贴簿管理,第三方 app 像是 CleanClip 提供了强大的功能和更好的组织方式。CleanClip 提供了全方位的剪贴簿历史管理解决方案,支援各种内容类型和…

Th:1.1 建立连接

基础讲解 1.TCP通信流程 基于TCP通信的Socket基本流程: 1.1 Socket 函数返回值&#xff1a;一个文件描述符&#xff1a; 特别的两个队列。 #include <sys/types.h> #include <sys/socket.h> //create an endpoint for communication int socket(int …

【服务器第二期】mobaxterm软件下载及连接

【服务器第二期】mobaxterm软件下载及连接 前言什么是SSH什么是FTP/SFTP mobaxterm软件介绍mobaxterm软件下载SSH登录使用方法1-新建ssh连接方法2-打开已有的ssh连接方法3-通过ssh命令建立连接 SFTP数据传输方法1-建立ssh连接后直接拖拽方法2-建立sftp连接再拖拽方法3-直接使用…

Selenium实现滑动滑块验证码验证!

背景&#xff1a;在部分的登录中有滑动验证码的验证&#xff0c;由于滑动验证码的缺块是随机的就导致实现起来比较困难&#xff01; 01、实现方案 模板匹配 通过openCV分析两个图片的相似度&#xff0c;获取两个相似度很高图片的坐标&#xff0c;从而计算两个图片的距离。 轮…

MTK zephyr平台:USB升级、枚举流程

一、USB升级流程 通过代码及log分析,当前平台升级过程在PL阶段进行 USB download相关代码 mtk/modules/hal/boot/preloader/platform/flashc/ mtk/modules/hal/boot/preloader/platform/board_name/flash/ mtk/modules/hal/boot/preloader/platform/board_name/src/drive…

【C++二叉树】二叉树的前序遍历、中序遍历、后序遍历递归与非递归实现

1.二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09; 前序遍历方式&#xff1a;根-左子树-右子树。 递归实现&#xff1a; 要传一个子函数来实先递归&#xff0c;原因是原函数返回值为vector&#xff0c;在原函数迭代&#xff0c;返回值就难…