我知道Spring使用动态代理或cglib作为AOP解析。当我使用Spring事务时,我必须公开一个@Transactional
方法,如果从内部方法调用声明性事务,则该声明事务将不起作用。我知道内部调用会绕过代理,而AspectJ是运行时解析,这在性能上有缺点。
因此,如果我在A.nonTxMethod()中调用A.txMethod(),则我有2种解决方案来获取A.txMethod()工作上的@Transactional注释:
谁能告诉我应该选择哪种解决方案?解决方案1或2似乎不是一个好主意,所以我应该使用解决方案3还是第四解决方案?