Spring Data Mongodb事務管理

Spring Data Mongodb事務管理

前言

這是一個很基礎實例demo,並未涉及到相關原理,以及什麼高深的知識。

一、環境

1、Mongodb 4.0副本集羣(必須):

mongo4.0開始支持事務管理,是基於副本集的(mongodb副本集羣搭建教程自行查詢)。

mongo4.2支持分片集羣事務。

2、Spring data mongodb 版本2.1以上(必須):

Spring data mongodb支持事務管理需要配置MongoTransactionManager,而這個Bean從Spring data mongodb 2.1版本纔開始有的(如果你使用的是Spring boot,那麼至少要保證data mongodb的版本在2.1以上,所以建議spring boot版本在2.1以後)在這裏插入圖片描述

二、實例

1、Spring data mongodb配置

maven依賴:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter</artifactId>
	<version>2.1.1.RELEASE</version>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
	<version>2.1.1.RELEASE</version>
</dependency>

application.properties配置文件:

# Mongodb
spring.data.mongodb.uri=mongodb://192.168.1.100:27017,192.168.1.200:27017/db

spring mongodb事務管理bean:


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 MongoTransactionConfig {
    @Bean
    public MongoTransactionManager transactionManager(MongoDbFactory dbFactory) {
        return new MongoTransactionManager(dbFactory);
    }
}

spring boot開啓事務管理( @EnableTransactionManagement ):

@EnableTransactionManagement
public class SpringBootApplication{
    public static void main(String[] args) {
        SpringApplication.run(SpringBootApplication.class, args);
    }
}

使用@Transactional註解標記需要事務管理的業務:

import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Service
public class ProcessService {
    ...

	@Transactional
	public void run() {
		// dosomething...
	}

	...
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章