← 每日面试题 学习看板

Spring 中注入 Bean 有几种方式

面试题/00java/04 框架/01Spring/03依赖注入与配置/Spring 中注入 Bean 有几种方式.md

面试记录 2026-10-11

题目:Spring 中注入 Bean 有几种方式

难度:medium

标签:spring/di, difficulty/medium

评分:⭐⭐⭐☆☆(3/5)

我的回答

Spring 中注入变量方式,核心应该有 3 种。首先是构造器注入,其次是属性注入,然后是属性 set、参数 set 的注入。理论上应该都使用构造器注入才更安全稳健,但是更多的其实是使用属性注入,直接在参数上做注入,连 set 的注入都很少用。参数注入的注入方式相对构造器跟 set 来说更简洁。

点评

优点:

不足:

补充:

完整讲解

第一部分:知识重点剖析

核心考点定位:考察 Spring IoC 容器的依赖注入机制,理解不同注入方式的优缺点和适用场景。

知识点拆解:

  1. 构造器注入:
  1. setter 注入:
  1. 字段注入(@Autowired 字段):
  1. @Value 注解注入:
  1. @Qualifier 注解:

第二部分:考察方向与延伸递进

考察方向:

延伸递进面试题:

  1. 构造器注入和 setter 注入怎么选?
  1. 字段注入为什么被 Spring 官方不推荐?
  1. @Value 和 @Autowired 有什么区别?

第三部分:面试者参考回答(三步法口语化,300-400 字)

【一句话结论】

面试官您好,Spring 中注入 Bean 主要有 3 种方式:构造器注入、setter 注入、字段注入,Spring 4.3+ 推荐构造器注入。

【三点展开】

第一,构造器注入通过构造函数参数注入,优点是创建不可变对象、必需依赖、单元测试友好,Spring 4.3+ 如果一个类只有一个构造器,@Autowired 可以省略。

第二,setter 注入通过 setter 方法注入,适合可选依赖、可重新注入的场景,但不适合创建不可变对象。

第三,字段注入直接在字段上标注 @Autowired,代码最简洁,实际开发中最常用,但 Spring 官方不推荐,因为不可测试、依赖 Spring 容器。

【一句边界】

当然,除了这 3 种,还有 @Value 注解从配置文件注入值,@Qualifier 注解指定同类型 Bean 中的哪一个,实际开发中需要根据场景灵活选择。