在一个公共的方法上加入 @Transactional,其中包含的私有方法中的事物生效嘛
时间: 2024-04-08 16:35:57 浏览: 58
Java注解@Transactional事务类内调用不生效问题及解决办法
在使用Spring的@Transactional注解时,它默认只对公共方法生效,而对于私有方法中的事务不会生效。
@Transactional注解是基于AOP(面向切面编程)实现的,它通过动态代理的方式来实现事务管理。当一个类被代理后,只有通过代理对象调用的方法才能被拦截到,从而应用事务管理。私有方法无法通过代理对象直接调用,因此@Transactional注解不会对私有方法中的事务生效。
如果需要在私有方法中使用事务,可以将该私有方法提取为一个公共方法,并在该公共方法上添加@Transactional注解。这样事务将会生效。
另外,还可以考虑使用编程式事务管理,即在代码中显式地开启、提交或回滚事务。这样可以更精确地控制事务的边界,无需依赖注解的方式。
阅读全文