在使用@Transactional注解的方法内部使用synchronized,在方法执行完毕后锁就会被释放,而此时事务可能还没有被提交,此时若有其他线程对数据进行修改会出现并发安全问题。若将锁加在函数调用的地方,将整个方法进行加锁。这样当方法执行完毕且事务也提交完毕之后锁才会被释放。public i