Spring 常用的注入方式有什么?

Spring 是一个非常流行的 Java 开发框架,它提供了多种依赖注入(Dependency Injection)的方式,使得开发者可以轻松地管理应用程序中的组件依赖关系。在 Spring 中,常用的注入方式主要包括构造器注入、Setter 方法注入、字段注入和注解驱动注入。让我们一一来详细讲解这些注入方式。

1. 构造器注入(Constructor Injection)

构造器注入是通过构造函数来注入依赖项的一种方式。在 Spring 中,通过在类的构造函数上使用 @Autowired 注解来实现构造器注入。例如:

public class ExampleService {private ExampleDependency dependency;@Autowiredpublic ExampleService(ExampleDependency dependency) {this.dependency = dependency;}
}

在上面的示例中,ExampleService 类通过构造函数接收 ExampleDependency 类的实例。Spring 在初始化 ExampleService 实例时,会自动将 ExampleDependency 实例注入到构造函数中。

2. Setter 方法注入(Setter Method Injection)

Setter 方法注入是通过类的 setter 方法来注入依赖项的一种方式。在 Spring 中,通过在 setter 方法上使用 @Autowired 注解来实现 Setter 方法注入。例如:

public class ExampleService {private ExampleDependency dependency;@Autowiredpublic void setDependency(ExampleDependency dependency) {this.dependency = dependency;}
}

在这个例子中,setDependency 方法用于设置 ExampleDependency 实例。Spring 在初始化 ExampleService 实例时,会调用该方法并将 ExampleDependency 实例注入其中。

3. 字段注入(Field Injection)

字段注入是通过直接注入类的字段来实现依赖注入的一种方式。在 Spring 中,通过在字段上使用 @Autowired 注解来实现字段注入。例如:

public class ExampleService {@Autowiredprivate ExampleDependency dependency;
}

在这个例子中,ExampleDependency 实例直接被注入到 ExampleService 类的 dependency 字段中。

4. 注解驱动注入(Annotation-driven Injection)

注解驱动注入是利用 Spring 提供的各种注解来自动完成依赖注入的一种方式。除了 @Autowired 注解外,还有一些其他的注解用于特定场景的注入,比如 @Qualifier@Value 等。

  • @Qualifier 注解用于指定具体的 bean 进行注入,当存在多个实现时可以指定具体使用哪一个。例如:

public class ExampleService {@Autowired@Qualifier("exampleDependencyImpl")private ExampleDependency dependency;
}
  • @Value 注解用于从属性文件、环境变量或其他 Spring 管理的 bean 中获取值并注入到类的字段中。例如:
public class ExampleService {@Value("${example.property}")private String property;
}

在 Spring 中,通过构造器注入、Setter 方法注入、字段注入和注解驱动注入等方式,可以实现依赖注入。选择合适的注入方式取决于具体的应用场景和开发者的偏好。

构造器注入适用于强制依赖项、确保对象完全初始化的情况;Setter 方法注入提供了更灵活的配置选项;字段注入则是一种简洁的方式;而注解驱动注入则可以通过注解来实现更加灵活和方便的注入方式。

综上所述,Spring 提供了丰富多样的依赖注入方式,开发者可以根据项目需求和个人喜好来选择合适的方式。

黑马程序员免费预约咨询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/322516.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

A Dexterous Hand-Arm Teleoperation System

A Dexterous Hand-Arm Teleoperation System Based on Hand Pose Estimation and Active Vision解读 摘要1. 简介2.相关工作2.1 机器人遥操作2.2 主动视觉(Active Vision) 3. 硬件设置4. 基于视觉的机器人手部姿态估计4.1 Transteleop4.2 Dataset 5. 主动…

Rust读写CSV文件 一维Vec类型元素、二维Vec类型元素写入CSV文件

本文主要介绍Rust读写CSV文件方法, Vec类型元素基本操作方法,Rust把一维Vec类型元素、二维Vec类型元素写入CSV文件方法。 实例测试: 要求读“log.csv”文件数据,把“时间”列数据和“次数”列数据写入日志处理结果1.csv文件&…

06-数组

1. 为什么需要数组 一个养鸡场有6只鸡,它们的体重分别是3kg,4kg,1kg,2kg,6kg,3kg。 没有数组,就需要定义六个变量,一个变量代表一只鸡的体重。 使用数组,就可以定义一…

安防视频/视频汇聚系统EasyCVR视频融合云平台助力智能化酒店安防体系的搭建

一、背景需求 2024年“五一”假期,全国文化和旅游市场总体平稳有序。文化和旅游部6日发布数据显示,据文化和旅游部数据中心测算,全国国内旅游出游合计2.95亿人次。“五一”假期县域市场酒店预订订单同比增长68%,而酒店作为一个高…

Dashboard 安装部署

Dashboard 安装部署 Dashboard 安装部署 一:下载 二:部署步骤 1.镜像下载及导入 国内直接拉外网镜像会失败,可在境外下载镜像 查看 deployment 里的镜像版本 Dashboard Deploymentcontainers:- name: kubernetes-dashboardimage: k8s.g…

Python - 金三银四心路历程 之 数据结构与算法 刷题

目录 一.引言 二.心路历程 三.刷题经历 四.刷题历程 五.总结 一.引言 <夜深人静写算法> 是 23 年 12 月底博主打算跳槽时开始做刷题准备做的专栏&#xff0c;前后准备了大约一个月&#xff0c;刷题完毕后简单准备了项目和简历后就开始加入找工作大军了&#xff0c;最…

VISIO 画任意形状的封闭图案

** 最终要的效果 ** 1. 先用任意曲线画个圈 2. 在开发工具中&#xff0c;找到对应的&#xff0c;先点连接&#xff0c;再点修剪 3. 多余的部分删掉

组合模式(Composite)——结构型模式

组合模式(Composite)——结构型模式 组合模式是一种结构型设计模式&#xff0c; 你可以使用它将对象组合成树状结构&#xff0c; 并且能通过通用接口像独立整体对象一样使用它们。如果应用的核心模型能用树状结构表示&#xff0c; 在应用中使用组合模式才有价值。 例如一个场景…

推荐非常方便的初始配置nginx的开源工具

官网 https://www.digitalocean.com/community/tools/nginx?global.app.langzhCN直接复制base64字符串在 /etc/nginx 目录执行&#xff0c;会自动生成配置文件&#xff0c;最后执行 使用tar解压新的压缩配置 tar -xzvf nginxconfig.io-xxx.com.tar.gz | xargs chmod 0644在…

uni-app 多列picker切换列显示对应内容

html部分&#xff1a; <view class"uni-list"><view class"uni-list-cell"><view class"uni-list-cell-left">选择用户</view><view class"uni-list-cell-db"><picker mode"multiSelector"…

三种中成药分享:舒肝健脾,脾肝同调。

三个中成药分享给大家&#xff0c;舒肝健脾&#xff0c;脾肝同调。 第一&#xff0c;【木香顺气丸】&#xff0c;它具有健脾和胃&#xff0c;镇气祛湿的功效。如果平时总感觉到身上没劲、疲惫没精神&#xff0c;四肢还很沉重&#xff0c;吃完饭肚子里总是胀气&#xff0c;伴随…

Isaac Sim 5 Ros相关(学习笔记5.8.3)

一.RGB、Depth、bbox话题发送 1.新建一个二驱示例小车 路径为Robot-Jetbot&#xff08;如果找不到也可以直接搜索Jetbot&#xff09; 2.添加Action Graph 导航栏中&#xff1a;Window - Visual Scripting - Action Graph&#xff0c;建立一个工作区&#xff0c;这个工作区中…

Python AI库pandas读写数据库的应用操作——以sqlite3为例

Python AI库pandas读写数据库的应用操作——以sqlite3为例 本文默认读者具备以下技能&#xff1a; 熟悉python基础知识&#xff0c;vscode或其它编辑工具 已阅读Pandas基础操作文章,了解pandas常见操作 具备自主扩展学习能力 在数据分析和人工智能领域&#xff0c;pandas库和s…

Llama 3 超级课堂

https://github.com/SmartFlowAI/Llama3-Tutorial/tree/main 第一节作业 streamlit run web_demo.py /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct

Context capture/Pix4Dmapper/AutoCAD/CASS/EPS软件的安装流程与使用方法;土方量计算;无人机摄影测量数据处理

目录 专题一 无人机摄影测量技术应用现状及其发展 专题二 基本原理和关键技术讲解 专题三 无人机影像外业数据获取 专题四 数据处理环境建立与软件熟悉 专题五 GNSS数据土方量计算 专题六 基于无人机影像数据的正射影像制作 专题七 基于无人机影像数据的三维模型制作 专…

DUX 主题 版本:8.2 WordPress主题优化版

主题下载地址&#xff1a;DUX 主题优化版.zip 支持夜间模式、快讯、专题、百度收录、人机验证、多级分类筛选&#xff0c;适用于垂直站点、科技博客、个人站&#xff0c;扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、自动缩略图

Linux 基础命令

目录 1.ls 2. cd 3. tree 4. touch 5.mkdir / rmdir ​编辑 6.rm 7.man 8.find which whereis 9.cat more less 10 date cal 11.grep 12.sort uniq 13.zip/unzip 14 tar 15.bc 16.uname 17.热键 在了解Linux基本操作之前&#xff0c;我们首先要了解Linux的一些最…

【人工智能基础】RNN实验

一、RNN特性 权重共享 wordi weight bais 持久记忆单元 wordi weightword baisword hi weighth baish 二、公式化表达 ht f(ht - 1, xt) ht tanh(Whhht - 1 Wxhxt) yt Whyht 三、RNN网络正弦波波形预测 环境准备 import numpy as np import torch from tor…

二叉树的前序、中序、后序遍历的C++实现

二叉树的前序、中序、后序 遍历属于深度优先搜索方式&#xff0c;本文使用递归法实现前序、中序、后序的遍历方法&#xff0c;代码如下&#xff1a; #include <iostream> #include <vector>struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeNode(int …

多角度解析动态住宅IP的多元化应用

动态住宅IP指的是在住宅网络中使用的、能够随时间或用户需求配置的IP地址&#xff0c;能够根据网络状况自动调整&#xff0c;为用户提供更加灵活、高效的上网体验。这种IP地址不是固定不变的&#xff0c;而是会定期自动更换&#xff0c;这种IP地址也让使用者的安全得以保障。 作…