Sping事务相关问题整理
使用AopContxt.currentProxy().方法可获取当前类的代理对象(是通过StaticUnadvisedExposedInterceptor或DynamicUnadvisedExposedInterceptor或JdkDynamicAopProxy#invoke中设置的,@EnableAspectJAutoProxy#exposeProxy可设置为true,将当前的aop对象暴露到AopContext的ThreadLocal变量currentProxy中)
在使用@Transactional注解声明事务时,会有以下四种情况:
在不同类中,事务方法A调用非事务方法B,事务具有传播性,事务生效;
在不同类中,非事务方法A调用事务方法B,事务生效;
在同一个类中,事务方法A调用非事务方法B,事务生效;
在同一个类中,非事务方法A调用事务方法B,事务失效,这是由于使用Spring AOP代理造成的,只有当事务方法被当前类以外的代码调用时,才会由Spring生成的代理对象来管理。`