面向切面编程
image.png
invocationHandler通过动态代理把事务加入到各个service里面。
image.png
image.png

Spring实现aop的原理

动态代理(优先使用)

被代理对象必须实现接口,才能产生代理对象。如果没有接口就不能实现代理对象。
首先手写一个动态代理,事实上,我并没有看得太懂,因为我没学过代理。
image.png
UserService就增删改查四个方法,实现类就加了system.out.print();
image.png
这是demo,和运行结果。
image.pngimage.png

cglib代理

第三方代理技术,cglib代理可以对任何类实现代理,其原理是对目标对象进行继承代理,如果类被final修饰,那么该类无法代理。
image.png
image.png