为什么在springboot中使用autowired的时候它黄色警告说不建议使用字段注入

byType找到多种实现类导致报错

@Autowired: 通过byType 方式进行装配, 找不到或是找到多个,都会抛出异常

我们在单元测试中无法进行字段注入

字段注入通常是 private 修饰的,Spring 容器通过反射为这些字段注入依赖。然而,在单元测试中,我们不能直接访问或赋值这些私有字段

所以为了在单元测试用也能注入我们的Bean对象,我们最好用构造注入

无法定义 final****字段

  • 字段注入的问题 : 使用字段注入时,字段必须是非 final 的,这违反了不可变性设计的最佳实践。

  • 构造函数注入的优势 : 构造函数注入允许将依赖声明为 final,确保依赖在对象构造后不可更改。

    @Component
    public class MyService {
    private final MyRepository myRepository;

      public MyService(MyRepository myRepository) {
          this.myRepository = myRepository;
      }
    

    }

Spring 的初始化顺序可能导致问题

  • 字段注入的问题 : 字段注入依赖于 Spring 的反射机制在对象实例化后注入依赖 。这可能导致在依赖注入完成之前尝试访问字段,从而引发 NullPointerException
  • 构造函数注入的优势: 构造函数注入在对象创建时就完成了所有依赖的初始化,避免了初始化顺序问题。
相关推荐
沉默王二2 分钟前
更快更强!字节满血版DeepSeek在IDEA中真的爽!
java·前端·程序员
2301_807449202 分钟前
字符串相乘——力扣
java·算法·leetcode
Java水解4 分钟前
Java-28 深入浅出 Spring - 实现简易Ioc-04 在上节的业务下手动实现AOP
后端
小五Z8 分钟前
RabbitMQ高级特性--消息确认机制
java·rabbitmq·intellij-idea
Kevinyu_19 分钟前
Maven
java·maven
nickxhuang23 分钟前
【基础知识】回头看Maven基础
java·maven
katasea26 分钟前
关于Springboot 应配置外移和Maven个性化打包一些做法
spring boot·maven
日月星辰Ace1 小时前
jwk-set-uri
java·后端
Huooya1 小时前
springboot的外部配置加载顺序
spring boot·面试·架构
用户108386386801 小时前
95%开发者不知道的调试黑科技:Apipost让WebSocket开发效率翻倍的秘密
前端·后端