代理和字节码编织方面之间存在巨大差异。代理只能在调用来自“外层空间”的情况下进行拦截,而不能在调用来自对象本身的情况下进行拦截(this.transactionalMethod())
这意味着,如果您有一个带有两个方法T和B的Class。Method
T具有事务注释,并且方法由”
B调用,则永远不会调用(for
)代理,因此在这种情况下不会进行事务处理!
T``“this.T()``T
如果您使用AspectJ,则事务处理代码在的字节代码中是织法的
T,无论调用是来自对象本身还是来自其他对象,都将执行该事务处理代码。



