使用synchronized对操作数据库方法进行加锁,避免并发操作。但是在方法中添加事务注解@Transactional并不能完全避免并发操作。原因如下:synchronized是对方法和事务的锁注解是针对方法的周边处理,即在方法运行前启动事务,在方法结束后提交事务。还没有提交的并发问题的解决方法是手动将事务的获取和提交方法写到process方法中,包含在进程锁@AutowiredprivatePlatformTransactionManagerplatformTransactionManager的约束中;@AutowiredprivateTransactionDefinitiontransactionDefinition;//启动事务TransactionStatustransaction=platformTransactionManager.getTransaction(transactionDefinition);//做一些事情。//提交交易platformTransactionManager.commit(transaction);
