【Spring】AOP的代理默认是Jdk还是Cglib?

时间:2020-06-24 01:20:18   收藏:0   阅读:146

菜瓜:你觉得AOP是啥

水稻:我觉得吧,AOP是对OOP的补充。通常情况下,OOP代码专注功能的实现,所谓面向切面编程,大多数时候是对某一类对象的方法或者功能进行增强或者抽象

菜瓜:我看你这个理解就挺抽象的

水稻:举个栗子??!我要在满足开闭原则的基础下对已有功能进行扩展

菜瓜:你说的这个low一点的方法怎么好像是在说我???

水稻:建议看一下动态代理设计模式【DP-动态代理】JDK&Cglib,我当然知道你不会看,所以我还准备了自定义注解的栗子

菜瓜:这个自定义注解又是怎么实现的呢?

水稻:不愧是你,没有源码看来是满足不了你的好奇心了!!不知道你是否还记得我们之前有聊到过bean创建完毕后会调用一些PostProcessor对其进一步操作

菜瓜:有印象,@PostConstruct注解就是InitDestroyAnnotationBeanPostProcessor在这里调用的,还自定义过BeanPostProcessorT对象打印输出过bean信息

水稻:你猜Spring是怎么操作的

菜瓜:let me try try。结合刚刚的栗子和提示,大胆猜测应该是用PostProcessor在bean创建完成之后生成代理对象。实际调用代理的invoke方法实现对被代理bean的增强

水稻:思路正确。看脉络

菜瓜:然后代理类中都有invoke方法,那些advice(@Around,@Before...)在invoke中找到适当时机调用对吧

水稻:是的,这里我想结合@Transactional注解会更容易理解,你肯定用过这个注解吧,它其实。。。

菜瓜:停。。。今天获取的知识量已经够了,我下去自己断点走一趟再熟悉熟悉。下次请结合Transactional注解再敲打我吧

水稻:也好,我下去再给你准备几个栗子??

 

总结:

原文:https://www.cnblogs.com/nightOfStreet/p/13185406.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!