Spring AOP 原理
面试题简述
Spring AOP 的原理是什么?
面试官想听的
1、Spring 是如何通过代理机制在运行时增强方法;
2、为什么有的类用 JDK 动态代理,有的用 CGLIB;
3、AOP 的执行链路大致如何。
面试示例回答
Spring AOP 的核心原理是通过动态代理机制在运行时生成代理对象,从而在不修改原有代码的情况下对方法进行增强。
当容器启动时,Spring 会解析所有的切面类(带有 @Aspect 注解的类),通过 AnnotationAwareAspectJAutoProxyCreator 这样的后置处理器介入 Bean 创建流程。
详情请参考:http://xhslink.com/o/4vWqeqHnkL1
由浅入深分析
1、AOP 实现的关键在于 BeanPostProcessor:AnnotationAwareAspectJAutoProxyCreator 会在 Bean 初始化前后检查是否需要代理,并创建代理对象。
2、动态代理与 CGLIB 区别:
(1)JDK 代理基于接口;
(2)CGLIB 基于继承目标类,生成子类覆盖方法实现增强。
3、调用链结构:Spring 内部维护一个 MethodInterceptor 链,每个切面对应一个拦截器,按顺序执行形成调用链。
4、织入时机:Bean 初始化完成后,在返回 Bean 实例之前由 AOP 创建代理完成织入。
面试加分点
1、能提到 AnnotationAwareAspectJAutoProxyCreator 是关键切入点;
2、能说明两种代理方式的区别和选择原则;
3、如果能够举一些 AOP 典型应用的例子,比如提到事务、日志、权限等,将会是大大的加分项;
#春招##实习##后端开发##算法##秋招#带你复盘2025大厂八股文面试,拆解面试官到底想听啥