实现
基于Spring AOP实现
返回一个通过动态代理生成的对象
public static Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h) ;
动态代理分为JDK代理和cglib代理
-
基于接口代理(JDK代理)
-
- 基于接口代理,凡是类的方法非public修饰,或者用了static关键字修饰,那这些方法都不能被Spring AOP增强
-
基于CGLib代理(子类代理)
-
- 基于子类代理,凡是类的方法使用了private、static、final修饰,那这些方法都不能被Spring AOP增强
收获
-
同一个对象中无事务方法访问有事务的方法,事务会失效
-
Spring存在事务传播,可以通过@Transaction内的属性指定,默认是将调用的方法都加到同一事务之中