失效因为SpringBoot默认使用的是基于代理的AOP(Aspect-Oriented Programming)机制来实现事务管理,而多重循环事务中的内层循环方法调用外层循环方法时,由于代理对象的缓存机制,导致内层循环方法无法触发事务的开启和提交操作,从而导致事务失效。
为了解决多重循环事务失效的问题,可以使用编程式事务管理,即在代码中手动控制事务的开启、提交和回滚操作。
另外,也可以考虑使用Spring的`Propagation.REQUIRES_NEW`传播机制,将内层循环方法设置为独立的事务,从而避免事务失效的问题。
同时,合理设计业务逻辑,尽量避免多重循环事务的出现,可以提高系统的性能和可维护性。
@Cacheable(value="articleCache",key="#root.targetClass+#root.methodName")