在controller层,为了记录接口的调用日志,使用aop切面在方法执行之前有个insert操作,方法执行之后有个update操作,然后接口方法里面没有新增和修改数据库记录的操作,但是运维却监控到长事务的告警,后面本地debug发现是因为切面里的事务传播到接口方法里导致的,spring默认的传播机制是required,所以导致select也在事务里面,这个方法执行时间很长,所以导致select引发长事务告警,改进的方法是将insert和update操作用线程去执行。
记录AOP中切面类的事务传播性引发的一个小问题
最新推荐文章于 2023-11-19 21:55:02 发布
本文介绍了一种在Spring框架中因AOP切面操作导致的长事务问题及其解决方案。问题出现在Controller层,通过AOP进行的日志记录操作意外地延长了事务处理时间,最终通过异步线程执行插入和更新操作解决了这一问题。
20万+

被折叠的 条评论
为什么被折叠?



