You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot未用@Autowired仍实现对象注入的原因咨询

为什么SpringBoot中构造方法未加@Autowired仍能注入依赖?

这其实是Spring框架从4.3版本开始引入的便捷特性,目的是减少冗余注解,让代码更简洁清爽。

具体来说,只要满足以下两个条件,Spring就会自动帮你完成构造方法的依赖注入,完全不需要额外添加@Autowired:

  • 你的类只有一个构造方法(无论这个构造方法是否带参数)
  • 这个类是Spring容器管理的Bean(比如标注了@Controller、@Service、@Component这类 stereotype 注解,或是通过其他方式注册到容器中)

回到你的代码示例:

public class Test { 
    private Test1 test1; 
    public Test(Test1 test1) { 
        this.test1 = test1; 
    } 
}

只要Test类本身被Spring管理(比如你给它加了@RestController或者@Component),并且Test1也是Spring容器中的Bean,Spring就会自动识别这个唯一的构造方法,把Test1实例注入进去。

当然也有例外情况:如果你的类存在多个构造方法,Spring就无法自动判断该使用哪一个来注入依赖,这时候你就必须给目标构造方法加上@Autowired注解,明确告诉Spring选择哪一个。

内容的提问来源于stack exchange,提问作者Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:13:11