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八股文复盘 文章被收录于专栏

带你复盘2025大厂八股文面试,拆解面试官到底想听啥

全部评论

相关推荐

01-14 16:23
广州商学院 Java
苏雨棠:加油朋友,你一定会找到的,一定要坚持,我最近上岸了,哈哈,找了三个月了,之前面试老是被刷,然后有大神发了一个AI语音面试工具给我,跟练了一个礼拜,面试水平一下子上去了😄真的好给力
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务