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

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. 对于复杂初始化逻辑使用方法注入

http://www.xdnf.cn/news/14001.html

相关文章:

  • DC3靶机渗透
  • python计算生态库:18个常用标准库+第三方库
  • 杭州电商代运营公司排名前十
  • SPRING AI 入门
  • 前端八股文 - JavaScript 篇
  • UE接口通信常见问题
  • Ubuntu下搭建Black Magic Probe (BMP) 编译环境
  • AbMole| 2-Deoxy-D-glucose(M5140;2-脱氧-D-葡萄糖)
  • 第七章接入技术
  • opencv opencv_contrib vs2020 源码安装
  • 简述Python里面search和match的区别
  • ZooKeeper详解以及应用部署(AI)
  • Spring Cache 详细介绍——补充
  • 深度解析 JuiceFS 权限管理:Linux 多种安全机制全兼容
  • JavaScript 原型(Prototype)详解
  • 金属切削机床制造企业如何破局?探索项目管理数字化转型
  • 学习STC51单片机35(芯片为STC89C52RCRC)智能小车3(PWM调速小车)
  • C++学习之虚析构函数
  • 【QT】QVariant 转换为自定义的枚举类型
  • 当机械工程师的餐桌变身实验室:立创电赛的真实创新启示录
  • 《深度优先搜索》题集
  • 结构型模式 (7种)
  • 鸿蒙期末总结
  • 高铁列车能否考虑加装飞翼?
  • 深入剖析 C++ 默认函数:拷贝构造与赋值运算符重载
  • C# TAP异步编程(Task/async/await)总结
  • VRFF: Video Registration and Fusion Framework
  • 机器学习与深度学习20-数学优化
  • 2025.06.12【3D曲线图】|用Python绘制DNA甲基化3D曲线图(以CpG位点为例)
  • 局域网内 100 台设备同屏直播技术方案