SpringBoot2.x整合Mongo支持事务
2019-08-27 本文已影响0人
theBookofChange
Mongo Transaction
不管是Mysql还是Oracle都支持事务,那么Mongo是否支持事务呢?
在项目中使用拉Mongo存储业务数据,但是由于业务数据需要保证一致性,MongoDB从4.0开始支持事务,而且4.0版本仅支持复制集,如果Mongo没有开启复制集是无法使用的
引入依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
配置说明
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.database=testTransaction
实现事务管理类,实现后可以用注解方式控制事务
@Configuration
public class MongoTransactionConfig {
@Bean
MongoTransactionManager transactionManager(MongoDbFactory factory){
return new MongoTransactionManager(factory);
}
}
@Override
@Transactional
public void addUser(UserEntity userEntity, WxStaff wxStaff) throws ApiException {
userDao.save(userEntity);
int = 1 / 0;
siteService.updateEmployAmount(siteEntity);
}
推荐几个比较好的帖子
- https://www.cnblogs.com/DevMuYuer/p/11141903.html
- https://www.cnblogs.com/vettel0329/p/10778931.html
- https://www.baeldung.com/spring-data-mongodb-transactions 官方文档