我截个调用链的堆栈截图 , 可以很直观地看到调用的顺序(从下往上看):
是吧 , 是按照顺序一个一个往后执行 , 然后再一个一个返回 , 就是递归呗 。
然后我再解释下上面的 chain 集合我们看到第一个索引位置的 ExposeInvocationInterceptor。
这个 Interceptor 作为第一个被调用 , 实际上就是将创建的 CglibMethodInvocation 这个对象存入 threadlocal 中 , 方便后面 Interceptor 调用的时候能得到这个对象 , 进行一些调用 。
从名字就能看出 expose:暴露 。
ok , 更多细节还是得自己看源码的 , 应付面试了解到这个程度差不多的 , 上面几个关键点一抛 , 这个题绝对稳了!
Spring AOP 和 AspectJ 有什么区别从上面的题目我们已经知道 , 两者分别是动态代理和静态代理的区别 。
Spring AOP 是动态代理 , AspectJ 是静态代理 。
从一个是运行时织入 , 一个在编译时织入 , 我们稍微一想到就能知道 , 编译时就准备完毕 , 那么在调用时候没有额外的织入开销 , 性能更好些 。
【spring|别再说 Spring AOP 默认用的是 JDK 动态代理】且 AspectJ 提供完整的 AOP 解决方案 , 像 Spring AOP 只支持方法级别的织入 , 而 AspectJ 支持字段、方法、构造函数等等 , 所以它更加强大 , 当然也更加复杂 。
- iPhone|挑手机别只看iPhone,值得入手的国产5G旗舰推荐,看看哪款你在用
- 裁员|阿里腾讯被爆裁员20%最直接反映了实体经济与互联网产业的区别!
- iPhone|2022换手机千万别抠搜,这4款手机最值得入手,用个三五年没问题
- 裁员|互联网大厂大规模裁员,别抱怨,毕业式裁员是给打工人最后的体面
- 网购|实体店家电有保障,业内人士道出实情:别再傻乎乎“网购”了
- 华为|裁员即毕业!京东多条业务线裁员,员工:压力特别大,要崩溃
- 华硕|华硕无双值得买吗?别犹豫了,首销日它已经登上京东热卖榜
- 对开门冰箱|三开门的冰箱和对开门的冰箱,究竟哪个更值得投入?来谈谈区别
- iPhone|苹果13pro和苹果13pormax的区别在哪里?
- iPhone|iPhone面临淘汰的3个信号:别纠结,一旦发现就该换手机了
