mongoDB5以上实现单机事务

news2025/7/19 10:53:27

原理就是因为目前mongodb只有副本,分片支持事务。我们就让单机变成单节点副本,同时又是主节点,可以读写

一、修改bin目录下的mongod.cfg

新增配置

replication:
  replSetName: rs0

二、重启mongodb服务、初始化(这是windows下的启动命令)

启动

>mongod --dbpath D:\mongodb\data\db --logpath=D:\mongodb\log\mongodb.log --logappend  --replSet=rs0

初始化

D:\mongodb\bin>mongo  #先进入mongo里

>rs.initiate()  #初始化配置

初始化后过一会儿就可以看见当前结点被选举成主节点了

三、创建user用户,并设置登录账号跟密码

其实不创建用户也可以跟springboot集成使用事务了,不过为了安全,最好还是设置安全认证

>use admin  #切换数据库

>db.createUser({user: "admin",pwd:  "Admin@123",roles: [ { role: "dbAdminAnyDatabase", db: "admin" } ]}) #在admin库创建管理员

四,application.yml配置

spring:
  application:
    # 应用名称
    name: ruoyi-mongodb
  profiles:
    # 环境配置
    active: @profiles.active@
  data:
    mongodb:
#      uri: mongodb://admin:Admin@123@/test?connect=replicaSet&replicaSet=rs0
      host: localhost
      port: 27017
      database: test
      username: admin
      password: Admin@123

五、配置文件,注入bean

因为一个服务一般可能同时连接mysql和mongodb,所以需要注入两个bean,默认是mysql的

注意:一个方法中不能既操作mysql又操作mongodb,因为事务不支持

@Configuration
public class TransactionConfig {

    @Bean(name = "mybatisTransactionManager")
    @Primary //事务默认使用mysql数据库
    public DataSourceTransactionManager testTransactionManager(@Qualifier("dataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean(name = "mongoTransactionManager")
    public MongoTransactionManager transactionManager(MongoDatabaseFactory factory){
        return new MongoTransactionManager(factory);
    }

}

六、使用办法

涉及mongodb操作时,添加@Transactional(value = "mongoTransactionManager")注解

涉及mysql的直接用@Transactional就可以了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/368955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2月24日作业

题目:通过操作Cortex-A7核,串口输入相应的命令,控制LED灯进行工作--->上传CSDN 1.例如在串口输入led1on,开饭led1灯点亮 2.例如在串口输入led1off,开饭led1灯熄灭 3.例如在串口输入led2on,开饭led2灯点亮 4.例如在串口输入led2off,开饭led…

day20_Map

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、比较器排序 三、Collections 四、Map 五、HashMap 六、TreeMap 零、 复习昨日 HashSet 不允许重复元素,无序 HashSet去重原理: 先比较hashco…

Java知识复习(二)Java集合

1、List、Set和Map的区别 List:存储的顺序是有序的、可重复的Set:存储的顺序是无序的、不可重复的Map:使用键值对存储,Key和Value都是无序的,其中Key不可重复,而Value可重复 2、ArrayList和LinkedList的区…

node报错

记录bug:运行 npx -p storybook/cli sb init 时报错gyp info spawn C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exegyp info spawn args [gyp info spawn args build/binding.sln,gyp info spawn args /nologo,gyp info spawn args…

OpenCV只含基本图像模块编译

编译OpenCV4.5.5只含基本图像模块,环境为Windows10 x64CMake3.23.3VS2019。默认编译选项编译得到的OpenCV库往往大几百MB甚至上GB,本文配置下编译得到的库压缩后得到的zip包大小仅6.25MB,适合使用OpenCV基本图像功能模块的项目移植而不牵涉其…

电子技术——伯德图与反馈

电子技术——伯德图与反馈 增益和相位边距 从上两节我们知道环路增益 AβA\betaAβ 可以决定一个系统的稳定性,一个更加简单和有效的方法是我们可以绘制 AβA\betaAβ 的伯德图(因为相位可以达到360度,因此这是一个四阶响应系统)…

行锁、表锁、主键外键、表之间的关联关系

Java知识点总结:想看的可以从这里进入 目录2.4、行锁、表锁2.5、主键、外键2.5.1、主键2.5.2、外键2.6、表的关联关系2.4、行锁、表锁 MyISAM默认采用表级锁,InnoDB默认采用行级锁。 表锁:开销小,加锁快,不会出现死锁…

KTV「消亡史」:辉煌、挫折与新生

【潮汐商业评论/原创】这是Ina工作的第五年,疫情之后,第一场大学同学聚会就定在了周末。同学群里大家热烈地讨论着聚会的地点,“要不咱们去KTV吧,哈哈哈哈哈哈”,突然有人提议到。“谁还去KTV啊”“多没意思啊”……随…

按字典序排列的最小的等价字符串[拆解并查集]

并查集前言一、按字典序排列的最小的等价字符串二、并查集总结参考文献前言 并查集有什么用?并查集是什么?搞懂这两个问题,相关的并查集问题就变得非常easy! 一、按字典序排列的最小的等价字符串 二、并查集 有一种方法&#x…

工单模型的理解与应用

工单(任务单)模型的定义 工单模型是一种分派任务的方法,可以用来跟踪、评估和报告任务的完成情况。它通常用于针对特定目标的重复性任务或项目,以确保任务能够按时完成并符合期望的标准。   工单模型的基本流程为:提…

GroupDocs.Merger for Java

GroupDocs.Merger for Java GroupDocs.Merger for Java是一个文档操作API,可帮助您合并、拆分、交换或删除文档页面。API通过启用或禁用密码提供保护,并允许开发人员加入PDF、Microsoft Word、Excel和Powerpoint文档。 支持的文件格式 Microsoft Office格…

常见激活函数Activation Function的选择

Activation Function激活函数一般会神经网络中隐层和输出层上,其中作用在输出层主要用于适配输出,比如sigmoid函数可用于生成[0,1]之间的概率估计值。而作用于隐层主要用于增加神经网络的非线性,增加了网络的表达能力,本文主要介绍…

测试员拿到新项目怎么着手测试?不要慌,照做准没错

一、目标 结合公司现有的项目情况制定合理规范的测试流程,提高测试效率和产品质量,尽可能减少客户对产品的问题反馈, 核心还是要加强项目组成员之间的工作交流和沟通,保证整个项目的高效率的按质按量的交付。 二、测试流程说明…

【git】git介绍与安装

Git是什么 Git是目前世界上最先进的分布式版本控制系统 git是由linux的创始人用c语言写的 和集中式比较 历史记录:Git 更加轻量级,每次提交只记录变化,而 SVN 每次提交会存储完整的文件; 版本管理:Git 更加灵活&…

Windows10 下测试 Intel SGX 功能

文章目录参考文献系统要求一、安装Open Enclave SDK 环境(一)什么是Open Enclave SDK(二)启动SGX功能方法一: BIOS启动方法二:软件方式启动(三)安装必要环境(1&#xff0…

【微信小程序】-- 其它常用组件介绍 -- button image(八)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &#…

cmake 入门二 库的编译,安装与使用

工程描述 1,建立一个静态库和动态库,提供HelloFunc 函数供其他程序编程使用,HelloFunc 向终端输出Hello World字符串。 2,安装头文件与共享库。 1 库的工程结构 1.1 工程目录下的CMakeLists.txt PROJECT…

【回眸】记录英飞凌TC397开发项目功能测试流程(包含CAN通信配置)

前言 记录一下从拿到新板子到最终测试的流程 过程 1、包线和接线帽 将大板子的电源接好,用不到的铜插头用美纹纸(胶带)包起来,防止线束之间相互碰撞导致短路,第一次下载需要把新板子用接线帽来接好,因为…

【论文简述】Learning Optical Flow with Adaptive Graph Reasoning(AAAI 2022)

一、论文简述 1. 第一作者:Haofei Xu 2. 发表年份:2022 3. 发表期刊:AAAI 4. 关键词:光流、图神经网络、自适应 5. 探索动机:现有光流估计方法主要解决基于特征相似性的匹配问题,少有工作研究如何显式…

Linux学习(8)Linux文件与目录管理

以下内容转载自鸟哥的Linux私房菜 绝对路径与相对路径 绝对路径:路径的写法『一定由根目录 / 写起』,例如: /usr/share/doc 这个目录。相对路径:路径的写法『不是由 / 写起』,例如由 /usr/share/doc 要到 /usr/share…