试图讲清楚spring的依赖注入

news/2024/9/22 14:31:32 标签: spring, java, mvc

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

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.niftyadmin.cn/n/5670418.html

相关文章

017_FEA_CSG_in_Matlab新的统一有限元分析工作流之2D几何

Matlab新的统一有限元分析工作流 从2023a开始,Matlab提供了一个统一有限元分析工作流(UFEAW,unified finite element analysis workflow)。 这个新的工作留提供一个统一的接口来求解三类问题,并且可以用同一套数据随…

使用vite+react+ts+Ant Design开发后台管理项目(一)

前言 本文将引导开发者从零基础开始,运用、react、react-router、react-redux、Ant Design、less、tailwindcss、axios等前沿技术栈,构建一个高效、响应式的后台管理系统。通过详细的步骤和实践指导,文章旨在为开发者揭示如何利用这些技术工…

无线麦克风哪个好,麦克风哪个品牌音质最好,领夹麦克风推荐

​无线领夹麦克风作为直播、视频录制等场景必备的设备之一,用起来很方便,功能多样且易于操作,在音频设备领域占据着重要地位。但当前市场乱象较为严重,有许多商家纷纷打起价格战,忽视了产品质量,造成耐用性…

C++ Primer:模板与泛型编程

1. 模板函数 在C中,模板与泛型编程是一种强大的编程范式,它允许程序员编写与类型无关的代码。这种类型无关的代码在编译时会被实例化,以支持特定的数据类型。下面是根据您提出的点,对模板函数及其相关概念的一个整理。 模板函数…

动手学深度学习(pytorch土堆)-05-1神经网络

Neural network 以下是 torch.nn 库中各个组件的详细分类: 1. 容器 (Containers) torch.nn.Sequential: 顺序容器,用于将层按顺序堆叠在一起。torch.nn.ModuleList: 模块列表,用于存储多个子模块。torch.nn.ModuleDict: 模块字典&#xff…

机械设备产品资料方案介绍小程序系统开发制作

设备产品资料介绍小程序系统,是一家工业机械设备生产厂家为了更好的服务客户而定制开发的一套小程序系统,让用户通过小程序就可以了解公司产品介绍的详细参数、售后服务和产品操作手持等。 该小程序系统里面主要开发的功能模块有: 1、产品目…

MATLAB基础应用精讲-【数模应用】RR值

目录 前言 RR值在不同领域的应用 不同领域中RR值的计算方法和意义 几个高频面试题目 RR,RRR,ARR,NNT指标详解 RR、OR、HR:区别、计算与适用场景 计算方法 (一)相对危险度(Relative risk) (二)优势比(Odds ratio,OR) (三)风险比(hazard raito) 算法原…

一款前后端分离CRM客户关系管理系统,支持客户,商机,线索,合同,发票,审核,商品等功能(附源码)

前言 在当今竞争激烈的商业环境中,企业面临着各种挑战,其中包括如何更有效地管理和跟进潜在客户以提高销售业绩。传统的客户管理方式往往效率低下,无法实时更新客户-信息,导致销售机会流失。因此,市场上急需一款能够简…