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相同


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM