当前位置: 首页 > news >正文

Spring依赖注入的四种方式(面)

目录

1. 构造器注入

2. 字段注入

3. Setter注入

4. 方法注入

最佳实践建议


1. 构造器注入

@Service
public class UserService {private final UserRepository userRepository;@Autowired // Spring 4.3+ 可以省略public UserService(UserRepository userRepository) {this.userRepository = userRepository;}
}

 特点是:

  • 通过类的构造方法注入依赖
  • 不可变的依赖(final属性)
  • 推荐使用, 特别是对于强制依赖
  • 便于单元测试

2. 字段注入

@Service
public class UserService {@Autowireprivate UserRepository userRepository;
}

特点是:

  •  直接在字段上加@Autowir
  • 代码简洁,但不够灵活
  • 不能用于final字段
  • 不推荐使用(难以测试,隐藏依赖关系)

3. Setter注入

@Service
public class UserService {private UserRepository userRepository;@Autowiredpublic setUserRepository(UserRepository userRepository) {this.userRepository = userRepository;}
}

 特点是:

  • 通过setter方法注入依赖

  • 适用于可选依赖

  • 允许对象在创建后被重新配置

  • 比字段注入更易于测试

4. 方法注入

@Service
public class UserService {private UserRepository userRepository;@Autowiredpublic publish(UserRepository userRepository) {this.userRepository = userRepository;}
}

特点

  • 通过任意方法注入依赖

  • 方法名可以自定义,不限于setter

  • 可以用于初始化逻辑

  • 支持多个参数注入

最佳实践建议

  1. 优先使用构造器注入 - 特别是对于强制依赖

  2. 可选依赖使用setter注入

  3. 避免使用字段注入 - 虽然方便但不利于测试和维护

  4. 对于复杂初始化逻辑使用方法注入

相关文章:

  • 集装箱残损识别系统如何检测残损?它的识别率能达到多少?
  • MySQL 索引学习笔记
  • OpenCV CUDA模块图像变形------对图像进行下采样操作函数pyrDown()
  • 基于Node.js的线上教学系统的设计与实现(源码+论文+调试+安装+售后)
  • Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型时序预测对比
  • LSTM助力迁移学习!深度学习架构性能提升,准确率达到99.91%!
  • 【无标题】六边形铺砖拓扑模型的深度解析:从几何结构到量子优势
  • 【机器学习】Teacher-Student框架
  • 使用freemarker模板 生成 word文档
  • 【论文阅读笔记】高光反射实时渲染新突破:3D Gaussian Splatting with Deferred Reflection 技术解析
  • Spring MVC 常用请求处理注解总结
  • 三轴云台之运动控制系统篇
  • uniapp——input 禁止输入 ,但是可以点击(禁用、可点击)
  • php列表头部增加批量操作按钮,多选订单数据批量微信退款(含微信支付SDK)
  • Kafka入门:解锁核心组件,开启消息队列之旅
  • 如何“下载安转Allure”?
  • UML和模式应用(软件分析设计与建模期末复习)
  • leetcode 从中序与后序序列 or 从前序与中序序列 构造二叉树 java
  • 【大模型应用开发】基于langchain的大模型调用及简单RAG应用构建
  • MATLAB griddatan 函数支持的插值方法MATLAB 的 griddatan 函数主要支持以下几种插值方法
  • 制作公众号的软件/搜索引擎优化规则
  • 通过云主机建设网站/友链互换平台推荐
  • 长沙的在线商城网站建设/经典品牌推广文案
  • 电脑做网站教学/seo优化平台
  • 门头沟高端网站建设/浏览广告赚钱的平台
  • 广州英铭网站建设/seo教程网