详解Spring支持的几种注入方式

在 Spring 框架中,Bean 的注入方式主要有以下几种,其中一些是自动注入的。以下是详细说明:

1. 构造函数注入 (Constructor Injection)

自动注入:使用 @Autowired 注解时,Spring 容器会自动调用带有 @Autowired 注解的构造函数,并传入所需的依赖对象。

@Component
public class MyService {private final MyRepository repository;@Autowiredpublic MyService(MyRepository repository) {this.repository = repository;}
}

2. Setter 注入 (Setter Injection)

自动注入:使用 @Autowired 注解时,Spring 容器会在创建 Bean 实例后,调用带有 @Autowired 注解的 setter 方法,并传入所需的依赖对象。

@Component
public class MyService {private MyRepository repository;@Autowiredpublic void setRepository(MyRepository repository) {this.repository = repository;}
}

3. 字段注入 (Field Injection)

自动注入:使用 @Autowired 注解时,Spring 容器会自动将依赖注入到带有 @Autowired 注解的字段中。

@Component
public class MyService {@Autowiredprivate MyRepository repository;
}

4. 基于配置文件的注入 (XML-based Configuration)

手动配置:通过 XML 配置文件来定义 Bean 及其依赖关系,不是自动注入。

<bean id="myService" class="com.example.MyService"><property name="repository" ref="myRepository" />
</bean><bean id="myRepository" class="com.example.MyRepository" />

5. 基于 Java 配置的注入 (Java-based Configuration)

手动配置:使用 @Configuration@Bean 注解来配置 Bean 及其依赖关系,不是自动注入。

@Configuration
public class AppConfig {@Beanpublic MyRepository myRepository() {return new MyRepository();}@Beanpublic MyService myService(MyRepository repository) {return new MyService(repository);}
}

6. @Resource

自动注入@Resource 注解是 JSR-250 标准的一部分,Spring 也支持它。它可以用于字段、setter 方法或构造函数,Spring 容器会自动注入依赖。

@Component
public class MyService {@Resourceprivate MyRepository repository;
}

7. @Inject

自动注入@Inject 注解是 JSR-330 标准的一部分,Spring 也支持它。它可以用于字段、setter 方法或构造函数,Spring 容器会自动注入依赖。

@Component
public class MyService {@Injectprivate MyRepository repository;
}

总结

自动注入

构造函数注入(使用 @Autowired

Setter 注入(使用 @Autowired

字段注入(使用 @Autowired

字段、setter 方法或构造函数注入(使用 @Resource@Inject

手动配置

基于配置文件的注入(XML 配置)

基于 Java 配置的注入(@Configuration@Bean

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

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

相关文章

教务管理系统-学员办理体系介绍

随着时代的快速开展&#xff0c;教育方面也没落下&#xff0c;不仅是线下线上都呈现许多训练校园&#xff0c;办理软件也顺势而为的呈现广阔训练校园面前&#xff0c;许多的校园和训练组织也都在运用教务管理系统了。运用教务管理系统里边的学员办理体系可以让相应的办理人员更…

Redis的一致性

一、产生的原因 使用缓存&#xff0c;在进行写操作的时候就会出现不一致的问题。 一致性分为三类&#xff1a;强一致性&#xff0c;弱一致性&#xff0c;最终一致性 二、方案 2.1 延时双删 在更新数据库的操作前后分别进行一次删除缓存的操作&#xff0c;并在更新数据库之后…

《HelloGitHub》第 98 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、…

Docker大学生看了都会系列(三、常用帮助、镜像、容器命令)

系列文章目录 第一章 Docker介绍 第二章 2.1 Mac通过Homebrew安装Docker 第二章 2.2 CentOS安装Docker 第三章 Docker常用命令 文章目录 前言环境常用命令帮助命令镜像命令容器命令 总结 前言 前面2章学完了基础概念&#xff0c;实操安装使用。接下来了解一些日常中常用的命令…

Java - 随机存取文件类

在Java中&#xff0c;随机存取文件&#xff08;Random Access File&#xff09;通常使用java.io.RandomAccessFile类来实现。这个类允许你读取和写入文件的任意位置&#xff0c;而不是像FileReader和FileWriter那样只能从头开始或追加到文件末尾。 RandomAccessFile类提供了用…

容器化部署fastdfs文件存储

目录 一、软件信息 二、构建fastdfs镜像 三、docker 启动fdfs服务 四、k8s部署fdfs服务 1、fdfs部署文件 五、外部服务访问 一、软件信息 fastdfs版本&#xff1a;fastdfs:V5.11 libfastcommon版本: V1.0.36 fastdfs-nginx-module版本&#xff1a;V1.20 nginx版本&…

速盾:cdn技术详解

CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;是一种基于分布式架构的网络技术&#xff0c;通过将内容缓存到离用户较近的服务器上&#xff0c;从而提升网站的访问速度和可靠性。本文将详细介绍CDN技术的原理和工作流程。 CDN技术的原理是将网…

h5相机功能

h5相机功能 利用vant input file <template><div class"mb10"><divv-for"(item, index) in info.imgList":key"index"class"imgItem f32 mr20"click"preview(item, index)"><img :src"doFileUrl…

<sa8650>QCX Usecase 使用详解—如何在管道中添加多个 IPE 实例

<sa8650>QCX Usecase 使用详解—如何在管道中添加多个 IPE 实例 一、前言二、UsecaseSRV添加新格式三、更新usecase.xml四、定义 IPE 的新实例五、添加新链接六、QCarcam测试XML一、前言 本节说明在使用Usecase/Pipeline XML 中添加多个 IPE 实例所需的更改。以下示例解释了…

使用Spring Boot和MybatisPlus的Java CRM客户关系管理系统源码

项目名称&#xff1a;CRM客户关系管理系统 功能模块及描述&#xff1a; 一、待办事项 今日需联系客户&#xff1a;显示当日需跟进的客户列表&#xff0c;支持查询和筛选。 分配给我的线索&#xff1a;管理分配给用户的线索&#xff0c;包括线索列表和查询功能。 分配给我的客…

导弹研究中常用坐标系及坐标系之间的变换

在导弹飞行控制过程中&#xff0c;需要时刻掌握导弹的飞行状态 &#xff08;速度、位置、姿态角等&#xff09;&#xff0c;这就有赖于描述导弹飞行状态的坐标系。除了大地坐标系和地心大地直角坐标系外&#xff0c;导弹常用的坐标系还有很多&#xff0c;合理而恰当地选择参考系…

golang调用外部程序包os/exec中的 Command和CommandContext 函数创建的Cmd对象的区别

在go语言中&#xff0c;我们可以通过os/exec包中的Command和CommandContext 函数创建对应的外部程序执行Cmd对象&#xff0c; 这2个函数创建的cmd命令执行对象是有区别的&#xff0c;CommandContext创建的对象可以携带上下文&#xff0c;这个主要用于我们通过cancel函数给对应的…

37【透视】两点透视

1 两点透视比较合适表现物体的结构 用两点透视绘制比较小的、箱子之类的物体 2 一点透视和两点透视的共存关系

【Binaryen】partiallyPrecompute函数梳理

在Binaryen中有一个优化名为Precompute&#xff0c;作用是进行一些提前计算&#xff0c;类似于LLVM中的常量折叠类似的操作。 涉及的提交文件在此。 首先放一下全部的代码&#xff1a; // To partially precompute selects we walk up the stack from them, like this://// …

vs - vs2013/vs2019工程文件的区别

文章目录 vs - vs2013/vs2019工程文件的区别概述笔记sln文件的区别VisualStudioVersion vcxproj文件的区别ToolsVersionPlatformToolset 备注更方便的方法END vs - vs2013/vs2019工程文件的区别 概述 为了避免安装UCRT的问题&#xff0c;想将手头的vs2019工程降级为vs2013工程…

VLM MobileVLM 部署笔记

目录 模型是自动下载的 在1060显卡上能跑 LLaMA Meta MobileVLM V2 MobileLLaMA-1.4B 调错 开源项目地址&#xff1a; GitHub - Meituan-AutoML/MobileVLM: Strong and Open Vision Language Assistant for Mobile Devices 模型是自动下载的 路径&#xff1a; C:\User…

解决Mac ~/.bash_profile 配置的环境变量重启终端后失效问题

在Mac系统中&#xff0c;配置环境变量通常是在~/.bash_profile文件中进行。然而&#xff0c;有时会遇到配置的环境变量在重启终端后失效的问题。 解决办法&#xff1a; 在~/.zshrc文件最后或最前面&#xff0c;增加一行 source ~/.bash_profile

SARscape雷达图像处理软件简介

合成孔径雷达&#xff08;SAR&#xff09;拥有独特的技术魅力和优势&#xff0c;渐成为国际上的研究热点之一&#xff0c;其应用领域越来越广泛。SAR数据可以全天候对研究区域进行量测、分析以及获取目标信息。高级雷达图像处理工具SARscape&#xff0c;能让您轻松将原始SAR数据…

Leetcode 第 131 场双周赛题解

Leetcode 第 131 场双周赛题解 Leetcode 第 131 场双周赛题解题目1&#xff1a;3158. 求出出现两次数字的 XOR 值思路代码复杂度分析 题目2&#xff1a;3159. 查询数组中元素的出现位置思路代码复杂度分析 题目3&#xff1a;3160. 所有球里面不同颜色的数目思路代码复杂度分析 …

AI 时代,产品经理该如何进化

前言 传统的互联网业务或者游戏业务&#xff0c;产品或者业务输出需求&#xff0c;技术人员只需要指哪打哪就好了。而人工智能发展到当下这个尴尬的阶段&#xff0c;仿佛它能干很多事&#xff0c;但是真把它往业务里搁就发现&#xff0c;这个叛逆的小东西不一定胜任的了这些有…