有人说
内部调用时,被调用方法的事务声明将不起作用Spring的事务传播策略在内部方法调用时将不起作用

解决方案 »

  1.   

    不知道是不是事务嵌套啊?如果是的话,下面仅供参考。
    http://www.iteye.com/topic/35907/
      

  2.   

    你知道配置事务的原理是什么?实际上就是一个 AOP,AOP 绝对不可能在方法中插入增强处理的!
      

  3.   

    而且还是一个 private 方法,private 根本不可能进行 AOP 处理,因为 AOP 的代理子类无法对 private 的方法进行增强。
      

  4.   

    大家不要纠结是不是private了,即便是public也是不行的。有哪位知道具体原因是怎么回事吗
      

  5.   


    那请问A是不是方法,为什么配置到A上就起作用呢,而配置到B上就不起作用。
      

  6.   


    这篇文章说的是关“PROPAGATION_NESTED”,并且文章中也提到服务间如何嵌套事务。
    和我咨询的还是有些差别。我咨询的是:
    Spring事务,如果A调用B(对B进行了事务配置,A不进行事务配置),为什么不起作用,
    但是如果对A配置事务就起作用,哪怕B不配置
      

  7.   

    <tx:method name="B" propagation="REQUIRED" />
    多配置一个节点就能解决的事情。
      

  8.   


    你好,方法A没有事务,我没有配置事务节点,而方法B有事务,我只配置了方法B的节点,结果不好用。除非我将A配置事务(B即便不配置事务)也对
      

  9.   


    那请问A是不是方法,为什么配置到A上就起作用呢,而配置到B上就不起作用。你要弄清楚这个问题,你必须要对 AOP 有一定地了解才做得到!Spring 的 AOP 在有接口的情况下将使用 JDK 的 Proxy,有兴趣的话去看一下 java.lang.reflect.Proxy 这个类和java.lang.reflect.InvocationHandler 接口。
      

  10.   

    你好,
    我的意思是在A方法中调用B方法方法A没有事务,我没有配置事务节点,而方法B有事务,我配置了方法B的节点,结果事务不起作用除非我将A配置事务(B即便不配置事务)也起作用。所以我想咨询的是 "是不是Spring 内部调用时,被调用方法的事务声明将不起作用",为什么呢?难道一定要在A方法上加事务码,A方法处理额外的逻辑,而这些逻辑中除了调用B方法外,不需要其他事务的啊。
      

  11.   

    A方法处理额外的逻辑,而这些逻辑中除了调用B方法外,不需要其他事务的啊。这就说明问题了,A方法才是关键啊。
      

  12.   

    难道是抛出的异常没有捕获?DBException--》Exception