spring的IoC(控制反转)面试题

Spring IoC 面试题(初级 Java 开发)


题目 1:什么是 Spring 的 IoC?(必考)

⭐ 标准回答

IoC(Inversion of Control,控制反转) 是一种设计思想,

指的是 将对象的创建、依赖关系的管理和生命周期的控制从程序本身转移给 Spring 容器

开发者只需要声明依赖关系,不需要手动创建对象。


⭐ 关键词(面试官在听)

  • 控制反转
  • 对象创建交给容器
  • 解耦
  • Spring 容器

题目 2:IoC 和 DI 有什么关系?

⭐ 标准回答

IoC 是一种思想,DI(Dependency Injection,依赖注入)是 IoC 的具体实现方式

Spring 通过 DI(如 @Autowired、构造器注入、setter 注入)来实现 IoC。


⭐ 关键词

  • IoC 是思想
  • DI 是实现方式
  • @Autowired

题目 3:Spring 是如何实现 IoC 的?

⭐ 标准回答

Spring 通过 IoC 容器 来实现 IoC。

容器在启动时会扫描带有 @Component@Service 等注解的类,

将它们注册为 Bean,并在需要时自动创建对象并注入依赖。


⭐ 关键词

  • IoC 容器
  • Bean
  • 组件扫描
  • 自动注入

题目 4:什么是 Bean?Bean 是如何创建的?

⭐ 标准回答

Bean 是由 Spring IoC 容器管理的对象

Spring 在启动时会根据配置(注解或 XML)生成 Bean 定义,

对于默认的单例 Bean,会在容器启动时创建实例并放入容器中。


⭐ 关键词

  • Bean
  • 容器管理
  • 单例(singleton)

题目 5:@Autowired 的注入规则是什么?

⭐ 标准回答

@Autowired 默认是 按类型(byType)进行注入

如果只有一个匹配的 Bean,则直接注入;

如果有多个实现类,则需要使用 @Primary@Qualifier 来指定。


⭐ 关键词

  • byType
  • @Primary
  • @Qualifier
  • 多实现冲突

题目 6:如果一个接口有多个实现类,Spring 如何解决注入冲突?

⭐ 标准回答

可以通过以下方式解决:

  1. 使用 @Primary 指定默认实现
  2. 使用 @Qualifier 精确指定 Bean 名称
  3. 直接按具体实现类类型注入(不推荐)

⭐ 关键词

  • 多实现
  • 冲突
  • 精确注入

题目 7:Spring 中 Bean 默认是单例还是多例?

⭐ 标准回答

Spring 中 Bean 默认是 单例(singleton) 的,

即在整个 IoC 容器中只存在一个实例。


⭐ 关键词

  • singleton
  • 默认作用域

题目 8:@Autowired 可以用在哪些地方?

⭐ 标准回答

@Autowired 可以用在:

  • 成员变量
  • 构造器
  • setter 方法
    Spring 推荐使用 构造器注入,因为它更安全、依赖更明确。

⭐ 关键词

  • 构造器注入
  • 字段注入
  • setter 注入

题目 9:为什么使用 IoC?有什么好处?

⭐ 标准回答

使用 IoC 可以:

  • 降低模块之间的耦合
  • 提高代码的可扩展性
  • 方便单元测试
  • 统一管理对象生命周期

⭐ 关键词

  • 解耦
  • 可维护
  • 可测试

题目 10(加分题):new 对象和 Spring IoC 有什么区别?

⭐ 标准回答

使用 new 创建对象时,对象的创建和依赖关系由程序员自己控制;

使用 Spring IoC 时,对象由容器创建和管理,依赖通过注入完成,

更符合大型项目的架构设计。



面试速记版(30 秒背诵)

IoC 是控制反转,把对象创建和依赖管理交给 Spring 容器;

DI 是 IoC 的实现方式;

Bean 是由容器管理的对象;
@Autowired 默认按类型注入,多实现用 @Primary@Qualifier

相关推荐
yxc_inspire2 分钟前
Java学习第二天
java·面向对象
毕设源码-赖学姐4 分钟前
【开题答辩全过程】以 基于net超市销售管理系统为例,包含答辩的问题和答案
java
昀贝14 分钟前
IDEA启动SpringBoot项目时报错:命令行过长
java·spring boot·intellij-idea
roman_日积跬步-终至千里1 小时前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
野犬寒鸦1 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
wenzhangli71 小时前
ooderA2UI BridgeCode 深度解析:从设计原理到 Trae Solo Skill 实践
java·开发语言·人工智能·开源
HalvmånEver1 小时前
Linux:线程互斥
java·linux·运维
rainbow68891 小时前
深入解析C++STL:map与set底层奥秘
java·数据结构·算法
灵感菇_1 小时前
Java 锁机制全面解析
java·开发语言
indexsunny1 小时前
互联网大厂Java面试实战:Spring Boot微服务在电商场景中的应用与挑战
java·spring boot·redis·微服务·kafka·spring security·电商