Spring使用动态代理实现申明式事务,Spring的动态代理又有2种
- 基于接口的JDK的动态代理
- 基于类继承的CGLIB代理
所以基于JDK的只有接口上的事务注解会生效,且只有主动调用该接口有效,其他接口中调用该函数是无效的
所以基于CGLIB的只有能被继承的函数有效,且同JDK一样,只有直接调用有效(代理模式的限制,想突破限制,可以手动获取代理类,再调用被代理的方法),且Spring规定只有public的方法能生效
Spring使用动态代理实现申明式事务,Spring的动态代理又有2种
- 基于接口的JDK的动态代理
- 基于类继承的CGLIB代理
所以基于JDK的只有接口上的事务注解会生效,且只有主动调用该接口有效,其他接口中调用该函数是无效的
所以基于CGLIB的只有能被继承的函数有效,且同JDK一样,只有直接调用有效(代理模式的限制,想突破限制,可以手动获取代理类,再调用被代理的方法),且Spring规定只有public的方法能生效