面向切面编程
invocationHandler通过动态代理把事务加入到各个service里面。
Spring实现aop的原理
动态代理(优先使用)
被代理对象必须实现接口,才能产生代理对象。如果没有接口就不能实现代理对象。
首先手写一个动态代理,事实上,我并没有看得太懂,因为我没学过代理。
UserService就增删改查四个方法,实现类就加了system.out.print();
这是demo,和运行结果。
cglib代理
第三方代理技术,cglib代理可以对任何类实现代理,其原理是对目标对象进行继承代理,如果类被final修饰,那么该类无法代理。