Java面试题更新 2026-08-05

请解释 Spring 框架中的 IoC(控制反转)和 AOP(面向切面编程)是什么,并简要说明它们各自的核心思想与作用。

技术原理Java

考察说明

考察对 Spring 两大核心特性的理解程度,能否清晰阐述其定义、原理和实际应用价值。

回答思路

  1. 【回答框架 1】IoC 即控制反转,是一种设计原则。传统对象由自己直接 new 依赖,控制反转后对象的创建和依赖注入交给容器管理。依赖注入是 IoC 的主要实现方式,容器在对象创建时自动注入所需依赖。
  2. 【回答框架 2】IoC 容器负责管理 Bean 的生命周期和依赖关系。常见注入方式包括构造器注入、Setter 注入和字段注入,推荐构造器注入以保证依赖完整性,使代码更易于测试和维护。
  3. 【回答框架 3】AOP 即面向切面编程,用于将横切关注点(如日志、事务、安全)从业务逻辑中解耦。核心概念包含切点、通知、切面和连接点,Spring AOP 基于动态代理实现,默认对接口使用 JDK 动态代理,对类使用 CGLIB。
  4. 【回答框架 4】AOP 的典型应用包括声明式事务管理和日志记录,通过声明切面可将通用逻辑集中管理,减少代码重复,提高模块化程度。
  5. 【关键点 1】IoC 核心是容器管理对象生命周期与依赖关系,反转了对象的创建权。
  6. 【关键点 2】依赖注入是 IoC 的主要实现方式,常用构造器注入。
  7. 【关键点 3】AOP 用于分离横切关注点,核心概念有切点、通知、切面。
  8. 【关键点 4】Spring AOP 基于动态代理,JDK 代理针对接口,CGLIB 针对类。
  9. 【关键点 5】AOP 的典型场景是事务管理和日志记录。
  10. 【易错点 1】将 IoC 直接等同于依赖注入,忽略 IoC 是更宽泛的设计思想。
  11. 【易错点 2】混淆 Spring AOP 与 AspectJ 语法,Spring AOP 是运行时增强,AspectJ 可在编译期或加载期织入。
  12. 【易错点 3】认为 AOP 可以处理所有横切逻辑,但性能敏感场景需考虑代理开销。