DI依赖注入的几种手段

简介: 本内容介绍了依赖注入的四种方式:构造器注入、接口注入、Setter注入和注解注入,并重点比较了Spring中的@Autowired与Java标准注解@Resource的区别,包括来源和依赖查找策略。
  • 构造器注入:通过调用类的构造函数来提供所需要的依赖项
  • 接口注入:依赖项通过特定接口的方式注入依赖,更强调依赖注入的契约化松耦合
  • Setter注入:通过调用类的Setter()方法来提供所需要的依赖项
  • 注解注入:通过@Autowired、@Resource等注解标记所需要注入的依赖项,然后由Spring容器来注入依赖,相较于其他注入方式更灵活

扩展:@Autowired和@Resource有什么区别

来源方面:

  • @Autowired来源于Spring框架,是Spring自带的注解 org.springframework.beans.factory.annotation.Autowired
  • @Resource是输入java的标准注解。javax.annotation.Resource

依赖查找策略方面:

  • @Autowired:通过byType(类型)匹配Bean。如果有多个相同类型的Bean会抛出NoUniqueBeanDefinitionException。存在多个相同类型的Bean时需要@Qualifier来指定Bean名称
  • @Resource:默认按照名字(byName)匹配Bean。若未指定name,则使用字段名或 Setter 方法参数名
目录
相关文章
|
12月前
|
SQL 关系型数据库 MySQL
mysql 简单的sql语句,入门级增删改查
介绍MySQL中的基本SQL语句,包括数据的增删改查操作,使用示例和简单的数据表进行演示。
mysql 简单的sql语句,入门级增删改查
|
19天前
|
SQL Arthas 关系型数据库
MySQL相关问题
当SQL语句执行缓慢时,可通过Skywalking等工具定位慢SQL,再使用Explain分析执行计划。重点关注possible_keys、key、key_len、type和extra字段,判断索引使用情况及是否回表。可通过优化索引、使用覆盖索引等方式提升性能。此外,还可开启MySQL慢日志或使用Arthas、Prometheus等工具辅助定位问题。
32 0
|
2月前
|
Java
== 与 equals 的区别
本段内容介绍了 Java 中 `==` 和 `equals` 的区别:`==` 用于基本类型比较值,引用类型比较地址;`equals` 默认行为与 `==` 相同,但常被重写以比较对象内容,如 String 和 ArrayList。
153 1
|
2月前
|
人工智能 运维 算法
通义灵码软件工程大模型获顶会最高奖!
近日,软件领域国际顶会ISSTA 2025(International Symposium on Software Testing and Analysis)公布最高奖项-杰出论文奖——「通义灵码软件工程大模型SWE-GPT」成为唯一获得该奖项的企业论文
|
2月前
|
存储 人工智能 自然语言处理
用Spring AI搭建本地RAG系统:让AI成为你的私人文档助手
想让AI帮你读懂PDF文档吗?本文教你用Spring AI和Ollama搭建一个本地RAG系统,让AI成为你的私人文档助手。无需GPU,无需云端API,只需几行代码,你的文档就能开口说话了!
|
Java 测试技术 Spring
Java 新手入门:依赖注入的 N 种姿势,总有一款适合你!
Java 新手入门:依赖注入的 N 种姿势,总有一款适合你!
218 2
|
Java 存储
线程池的核心参数有哪些?
线程池七大核心参数:核心/最大线程数、线程保持时间及单位、阻塞队列、线程工厂与拒绝策略。
329 0
|
2月前
|
分布式计算 算法 大数据
大数据时代的智能研发平台需求与阿里云DIDE的定位
阿里云DIDE是一站式智能大数据开发与治理平台,致力于解决传统大数据开发中的效率低、协同难等问题。通过全面整合资源、高度抽象化设计及流程自动化,DIDE显著提升数据处理效率,降低使用门槛,适用于多行业、多场景的数据开发需求,助力企业实现数字化转型与智能化升级。
70 1
|
3月前
|
数据可视化 搜索推荐 程序员
低代码平台是什么?一文简述:低代码开发平台的分类、功能与构成
本文深入探讨了低代码的概念、分类及其构成,旨在为读者清晰阐述低代码的内涵与外延。文章从低代码的历史起源讲起,追溯至1982年James Martin的前瞻性预测,再到2014年Forrester正式提出“低代码”概念。文中详细解析了低代码与无代码的区别,并按代码量、适用范围、业务类型及使用者类型等多个维度进行分类。
|
7月前
|
物联网 数据处理 C#
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据。在自动化、物联网以及工业控制行业中,上位机开发是一项重要的技能。本教程主要介绍使用C#进行上位机开发,重点在于串口通信和数据处理。
1216 82