mongodb事务控制不能在单点模式下进行,需要在副本集环境下进行事务处理。
docker 下部署mongo副本集,可参考:
https://www.jianshu.com/p/5b3b8e96c663
关系型数据库事务控制
关系型数据库,如mysql、oracle等,在springboot 中,在方法上加上注解 @Transactional,即可完成事务控制。
mongo事务控制
mongo在springboot中也用到了@Transactional,但是会发现不起作用,原因是没有配置mongo的事务管理Bean。配置类如下:
@Configuration
public class TransactionConfig {
@Bean
MongoTransactionManager transactionManager(MongoDbFactory factory){
return new MongoTransactionManager(factory);
}
}
加上配置类后,即可完成通过@Transactional 实现方法的事务控制。
注意点
@Transactional只需要加在进行存储操作的service实现类服务中,不需要每层都加这个注解。
网友评论