Same class invoke NOT effective in Spring AOP cglib

前端 未结 2 601
不知归路
不知归路 2020-12-19 15:21

Suppose we have following class

@Service
class MyClass {

    public void testA() { 
        testB();
     }

    @Transactional
    public void testB() { ..         


        
2条回答
  •  渐次进展
    2020-12-19 15:22

    You almost have it right. The proxy looks something more like this:

    class Cglib$MyClass extends MyClass {
    
      MyClass delegate;
    
      @Override
      public void testB() {
        // ...do transactional things
        delegate.testB();
      }
    }
    

    Any call is forwarded by Spring which is why your nested annotations are not activated.

    Also, if a virtual method like testA was overridden, Spring could not avoid to invoke the overridden method.

提交回复
热议问题