簡述
本周主要的工作任務是,將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相同