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

为什么推荐使用@RequiredArgsConstructor代替@Autowired?

首先说一下前提:

  • 项目中已经使用了Lombok,否则添加 Lombok 可能会增加项目的复杂度和构建时间。
  • 如果依赖项是可选的或可能在运行时改变,则使用字段注入或 setter 注入可能更为合适。

正文:
在 Spring 框架中,@Autowired 是用于自动装配依赖项的注解。
它可以应用于字段、构造器、setter 方法以及配置方法。
虽然 @Autowired 是 Spring 提供的一种强大功能,
但在某些情况下,
使用 Lombok 库中的 @RequiredArgsConstructor 可以带来一些额外的好处。

以下是推荐使用 @RequiredArgsConstructor 代替 @Autowired 的几个原因:

  1. 减少显式注解

    • 当你有多个依赖项需要注入时,使用 @Autowired 需要在每个字段或构造器参数上添加注解,这可能会使代码变得冗长。
    • @RequiredArgsConstructor 自动生成一个构造器,该构造器包含了所有被声明为 final 或标记了 @NonNull 的字段。这样可以避免在每个字段上重复使用 @Autowired
  2. 提高可读性和可维护性

    • 显式的构造器注入使得依赖关系更加明显,易于阅读和理解。
    • 使用构造器注入可以确保依赖项不会被意外地更改,因为 final 字段不允许重新分配。
    • 依赖项在构造时确定,有助于创建不可变对象,这对于多线程环境来说是有益的。
  3. 避免懒加载问题

    • 如果不正确地使用 @Autowired 注解,可能会遇到由于懒加载导致的 null 指针异常等问题。
    • 构造器注入在对象创建时就完成了依赖的绑定,从而避免了这类问题。
  4. 更好的工具支持

    • 现代 IDE 如 IntelliJ IDEA 提供了对 Lombok 的良好支持,可以自动处理生成的代码,使得开发体验更加流畅。
    • 有些开发者和团队发现使用 Lombok 减少了模板代码的数量,提高了开发效率。
  5. 单元测试友好

    • 使用构造器注入通常更容易进行单元测试,因为依赖项是在构造时明确指定的。
http://www.lryc.cn/news/411059.html

相关文章:

  • ARM系列运行异常排查
  • Hive3:库操作常用语句
  • C语言实现:C51单片机驱动LCD屏幕显示字符串(Proteus+Keil)
  • 暄桐好作业之《临沈周〈东庄图册〉局部》
  • Qt3D创建3D物体步骤
  • UDP程序设计
  • 计算机网络—电路、分组、报文交换—图文详解
  • linux下交叉编译licensecc
  • 模型剪枝综述
  • 破解监控难题,局域网电脑监控软件哪家强?
  • Linux--Socket编程TCP
  • Android Studio导入源码
  • UE5 UE4 使用python进行编辑器操作
  • 区块链技术在智能城市中的创新应用探索
  • 解决mysql事件调度器重启服务后自动失效的问题
  • mybatis开启二级缓存
  • Oracle大型数据库管理(一)Oracle大型数据库管理全面指南
  • Arcgis中查找空间距离范围内字段相等的数据
  • js中map属性
  • CS224W—03 GNN
  • 库存超卖问题解决方式
  • 30岁决心转行,AI太香了
  • C#知识|文件与目录操作:目录的操作
  • 从零到一:用Go语言构建你的第一个Web服务
  • 塔子哥的环游之旅-腾讯2023笔试(codefun2000)
  • 力扣SQL50 换座位
  • SOPHGO算能科技BM1684芯片修改内存布局
  • CUDA实现矩阵乘法的性能优化策略
  • element ui 修改table筛选按钮为自定义按钮
  • 面向对象编程:一切皆对象