1. 程式人生 > 其它 >SpringBoot2.1.X整合MongoDB(支援事務)

SpringBoot2.1.X整合MongoDB(支援事務)

簡述

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