Java面试题更新 2026-08-03

请解释面向切面编程(AOP)的定义、核心概念、常见应用场景及其优缺点。

考察说明

考查对面向切面编程核心思想、实现机制和典型应用的理解。

回答思路

  1. 【回答框架 1】面向切面编程(AOP)是一种编程范式,旨在通过将横切关注点(如日志、事务、安全)从业务逻辑中分离出来,提高模块化程度。其核心是将通用功能封装为切面,在不修改原有代码的情况下,通过代理机制动态织入业务方法。
  2. 【回答框架 2】AOP的关键概念包括切面(模块化的横切逻辑)、连接点(程序执行中的某个位置,如方法调用)、切入点(定义哪些连接点需要增强)、通知(在切入点上执行的具体动作,如前置、后置、环绕通知)以及引入(静态添加方法或属性)。
  3. 【回答框架 3】实现机制上,Spring AOP基于动态代理:若目标类实现接口,则使用JDK动态代理;若未实现,则使用CGLIB字节码生成子类代理。代理在运行时创建,对调用方透明。
  4. 【回答框架 4】典型应用包括日志记录、性能监控、事务管理、权限校验等。优点是通过解耦横切关注点提升代码复用性和可维护性,缺点是可能增加运行时开销、调试复杂度,且对私有方法、静态方法等无法实现切面(部分框架限制)。
  5. 【关键点 1】AOP将横切关注点从业务逻辑中分离,提高模块化。
  6. 【关键点 2】核心概念:切面、连接点、切入点、通知、引入。
  7. 【关键点 3】Spring AOP通过JDK动态代理或CGLIB实现运行时织入。
  8. 【关键点 4】常见应用:事务、日志、安全、性能分析。
  9. 【关键点 5】主要缺点是运行时代理开销和调试难度增加。
  10. 【易错点 1】误以为AOP能直接保证业务幂等,实际仅处理横切逻辑,幂等需额外措施。
  11. 【易错点 2】忽略框架限制:如Spring AOP无法对私有方法、静态方法织入。
  12. 【易错点 3】认为AOP仅用于日志,忽略事务、安全等更重要的场景。