SpringBoot2.1.X整合MongoDB(支援事務)
阿新 • • 發佈:2021-12-05
簡述
本週主要的工作任務是,將mongDB整合到Springboot中,並且要用註解事務(@Transactional),本文記錄下整合過程。
前期依賴準備
- 要支援多文件事務,mongo版本必須為4.0以上
- 開啟replica-set(多文件事務必須要在replica-set的基礎上才能開啟,MongoDB官網上有描述),具體怎麼開啟可參考此文: windows下配置replica-set
- 檢視mongodb的資料庫是否能正確連線
此處推薦mongodb資料的視覺化工具:adminMongo,或者用官方的mongoCompass。
加依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
加配置
spring.data.mongodb.uri=mongodb://10.254.193.30:27017/test?maxPoolSize=512
事務開啟
建立配置類,開啟事務
package com.example.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.data.mongodb.MongoTransactionManager; @Configuration public class TransactionConfig { @Bean MongoTransactionManager transactionManager(MongoDbFactory factory){ return new MongoTransactionManager(factory); } }
然後方法註解 @Transactional(rollbackFor = Throwable.class)
@Transactional(rollbackFor = Throwable.class)
public void saveTest(Mongo test) {
mongoTemplate.save(test);
int i = 1/0;
}
在啟動類上加上事務註解@EnableTransactionManagement
。
注:以上為MongoTemplate方式,MongoTemplate和MongoRepository方式都與Spring整合SpringDataMongoDB相同