SpringBoot 整合 MongoDB 6 以上版本副本集及配置 SSL / TLS 协议
续上一篇 Linux 中使用 docker-compose 部署 MongoDB 6 以上版本副本集及配置 SSL / TLS 协议
前提:此篇文章是对上一篇文章的实战和项目中相关配置的使用,我这边针对 MongoDB 原有基础上做了增强,简化了 MongoDB 配置 SSL / TLS 协议上的支持, 目前支持 SpringBoot、SpringCloud 等场景下,支持 MongoDB 单机、副本集、分片集群部署上的使用,具体功能可通过 https://github.com/mbql/mbql-mongodb-model 链接访问。
一、项目中引入 MongoDB 依赖
<dependency><groupId>io.github.mbql</groupId><artifactId>mbql-mongodb-model</artifactId><version>1.0.2</version></dependency>
二、通过 yaml 文件配置(有三种模式配置,同时也支持 Java API 方式配置)
# mongodb 默认模式配置(适用于单机模式)
mongodb:url: mongodb://root:123456@127.0.0.1:27017/test?authSource=admin
# 或者
mongodb:url: mongodb://127.0.0.1:27017/testauth-user-name: rootpassword: 123456database: admin# mongodb SSL / TLS 静态模式配置(适用于单机、副本集、分片模式)
mongodb:url: mongodb://root:123456@127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/test? replicaSet=rs0&tls=true&authSource=admin&tlsAllowInvalidHostnames=true&compressors=zstd&zlibCompressionLevel=6enable-ssl: true # 开启 SSL / TLS 模式use-static-mode: true # 使用静态模式 cluster-type: replica_set # 集群类型cluster-connection-mode: multiple # 集群连接模式certs:password: 123456 # 证书密钥密码trustStoreName: cacerts # JVM 信任证书名称keyStoreName: keystore.pkcs12 # JVM 密钥证书名称
# 或者
mongodb:url: mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/testenable-ssl: trueuse-static-mode: truecluster-type: replica_setcluster-connection-mode: multipledatabase: admin # 认证数据库repl-set-name: rs0 # 副本集名称invalid-host-name-allowed: true # 允许无效主机连接, 默认是只能本机auth-user-name: root # 认证用户名password: 123456 # 认证用户密码certs:password: 123456 # 证书密钥密码trustStoreName: cacerts # JVM 信任证书名称keyStoreName: keystore.pkcs12 # JVM 密钥证书名称# mongodb SSL / TLS 动态模式配置(适用于单机、副本集、分片模式)
mongodb:url: mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/testinvalid-host-name-allowed: trueenable-ssl: truecluster-type: replica_setcluster-connection-mode: multiplerepl-set-name: rs0certs:password: 123456trustStoreName: cacertskeyStoreName: keystore.pkcs12
# 或者
mongodb:url: mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/test? replicaSet=rs0&tlsAllowInvalidHostnames=true&compressors=zstd&zlibCompressionLevel=6enable-ssl: true # 开启 SSL / TLS 模式cluster-type: replica_set # 集群类型cluster-connection-mode: multiple # 集群连接模式certs:password: 123456 # 证书密钥密码trustStoreName: cacerts # JVM 信任证书名称keyStoreName: keystore.pkcs12 # JVM 密钥证书名称# 具体配置可参考:https://github.com/mbql/mbql-mongodb-model/blob/master/README.md
三、演示上面 3 种不同模式的 Monogo 客户端配置及使用
1、默认模式使用(单机模式示列)
配置 mongo 客户端连接信息
mongodb:url: mongodb://127.0.0.1:27017/testauth-user-name: rootpassword: 123456database: admin
启动项目并且没有出现错误,就正常连接成功,如下图:

2、SSL / TLS 静态模式(副本集模式演示)
配置 mongo 客户端连接信息
mongodb:url: mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/testenable-ssl: trueuse-static-mode: truecluster-type: replica_setcluster-connection-mode: multiplerepl-set-name: rs0 # 副本集名称invalid-host-name-allowed: true # 允许无效主机连接, 默认是只能本机certs:password: 123456 # 证书密钥密码trustStoreName: cacerts # JVM 信任证书名称keyStoreName: keystore.pkcs12 # JVM 密钥证书名称
在项目 classpath 路径下创建 certs 目录,并将 JVM 信任证书 cacerts 和 客户端密钥证书 keystore.pkcs12 放到该目录里面,具体怎么生成自签名证书可参考上一篇文章,并且 JVM 相关证书的生成可参考 https://github.com/mbql/mbql-mongodb-model/blob/master/README.md
启动项目并且没有出现错误,就正常连接成功,如下图:

3、SSL / TLS 动态模式(副本集模式演示)
mongodb:url: mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/testinvalid-host-name-allowed: trueenable-ssl: truecluster-type: replica_setcluster-connection-mode: multiplerepl-set-name: rs0certs:password: 123456trustStoreName: cacertskeyStoreName: keystore.pkcs12
在项目 classpath 路径下创建 certs 目录,并将 JVM 信任证书 cacerts 和 客户端密钥证书 keystore.pkcs12 放到该目录里面,具体怎么生成自签名证书可参考上一篇文章,并且 JVM 相关证书的生成可参考 https://github.com/mbql/mbql-mongodb-model/blob/master/README.md
启动项目并且没有出现错误,就正常连接成功,如下图:

相关文章:
SpringBoot 整合 MongoDB 6 以上版本副本集及配置 SSL / TLS 协议
续上一篇 Linux 中使用 docker-compose 部署 MongoDB 6 以上版本副本集及配置 SSL / TLS 协议 前提:此篇文章是对上一篇文章的实战和项目中相关配置的使用,我这边针对 MongoDB 原有基础上做了增强,简化了 MongoDB 配置 SSL / TLS 协议上的支…...
C语言static关键字
目录static修饰局部变量static修饰全局变量static修饰函数static是C语言的关键字,它有静态的意思static的三种用法:修饰局部变量修饰全局变量修饰函数 static修饰局部变量 我们先看一个程序: void print() {int a 0;a;printf("%d\n&…...
【华为OD机试模拟题】用 C++ 实现 - 单词接龙(2023.Q1)
最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 货币单位换算(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 选座位(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 停车场最大距离(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 重组字符串(2023.Q1) 【华为OD机试模…...
PHP基础(2)
PHP基础常用函数数组及多维数组数组遍历强制类型转换运算符赋值与基本运算字符串运算逻辑运算符常用函数 substr的用法是:substr(目标字符串,从字符串的哪个位置开始,然后返回往后的几个字符)strchr的用法是࿱…...
Java8(JDK1.8)新特性
一、Java8(JDK1.8)新特性 1、Lamdba表达式 2、函数式接口 3、方法引用和构造引用 4、Stream API 5、接口中的默认方法和静态方法 6、新时间日期API 7、OPtional 8、其他特性 二、java8(JDK1.8)新特性简介 1、速度快; 2、代码少、简…...
【C语言】指针的定义和使用
指针一、什么是指针二、指针类型三、指针和数组的关系四、空指针五、野指针一、什么是指针 指针(Pointer)是编程语言中的一个对象,通过地址直接指向内存中该地址的值。由于通过地址能够找到所需的变量存储单元,可以说地址指向该变…...
Parameter ‘zpspid‘ not found
异常:nested exception is org.apache.ibatis.binding.BindingException: Parameter testypid not found. Available parameters are [ztpsXmjcxx, pageable, param1, param2]分析:以为是xml文件中没有对应的字段,一细看了几遍是有这个字段的…...
23、高自由度下的E类波形理论计算(附Matlab代码)
23、高自由度下的E类波形理论计算(附Matlab代码) 0、代码 任意占空比、电压导数条件下的E类波形与阻抗条件计算Matlab 注意修改路径,我这边是:!!!!!!&#…...
软件测试:用“bug”来表示“在电脑程序里的错误”
计算机基础知识计算机(personal computer)俗称电脑(pc),是现代一种用于高速计算的电子机器,可以进行数值计算,又可以进行逻辑判断,还具有存储记忆功能,且能够按照程序的运…...
Git命令
git init # 初始化本地git仓库(创建新仓库)git config --global user.name "xxx" # 配置用户名git config --global user.email "xxxxxx.com" # 配置邮件git config --global color.ui true # git status等命令自动着色git config -…...
Java的异常概念和类型
Java是一种流行的编程语言,拥有强大的异常处理机制,以帮助开发人员在程序出现异常时更好地处理错误情况。本文将介绍Java异常的概念和类型。异常的概念在Java中,异常是指在程序运行时发生的错误或异常情况。例如,当程序试图打开不…...
【Leedcode】环形链表必备的面试题和证明题(附图解)
环形链表必备的面试题和证明题(附图解) 文章目录环形链表必备的面试题和证明题(附图解)前言一、第一题1.题目2.思路3.代码4.延伸问题(1)证明题一:(2)证明题二:二、第二题1.题目2.思路延伸的证明题总结前言 …...
Vulnhub靶场----7、DC-7
文章目录一、环境搭建二、渗透流程三、思路总结一、环境搭建 DC-7下载地址:https://download.vulnhub.com/dc/DC-7.zip kali:192.168.144.148 DC-7:192.168.144.155 二、渗透流程 nmap -T5 -A -p- -sV -sT 192.168.144.155思路: …...
【Unity VR开发】结合VRTK4.0:创建滑块
语录: 只有经历地狱般的磨练,才能炼出创造天堂的力量。 前言: 滑块是一个非常简单的控件,它允许通过沿有限的驱动轴滑动 Interactable 来选择不同的值。我们将使用线性驱动器创建一个滑块控件,该控件允许我们根据与滑…...
Latex中的表格(2)
Latex中的表格一、一个加脚注的三线表的例子二、表格中加注释三、并排的表格3.1 使用小页环境并排表格3.2 使用子表格并排表格四、一个复杂的表格五、一个长表格这篇文章主要罗列一些特殊的表格例子。内容来自:一篇北师大学位论文模板,详见https://githu…...
(七)输运定理
本文主要内容包括:1. 物质积分2. 曲线上物质积分的时间变化率3. 曲面上物质积分的时间变化率4. 体积域上物质积分的时间变化率 (Reynolds 输运定理)1. 物质积分 考虑 t0t_0t0 时刻参考构型中由物质点 X⃗\vec{X}X所形成的 物质曲线 ct0c_{t_0}ct0、物质曲面 …...
ABBYYFineReader15免费电脑pdf文档文字识别软件
ABBYYFineReader是一款OCR文字识别软件,它可以对图片、文档等进行扫描识别,并将其转换为可编辑的格式,比如Word、Excel等,操作也是挺方便的。 我们在官网找到该软件并进行下载,打开软件后,选择转换为“Mic…...
顺序表(超详解哦)
全文目录引言顺序表定义静态顺序表动态顺序表动态顺序表的接口实现顺序表的初始化与销毁顺序表尾插/尾删顺序表头插/头删顺序表在pos位置插入/删除顺序表的打印顺序表中的查找总结引言 在生产中,为了方便管理数据,我们经常会需要将一些数据连续的存储起…...
Compose-Animation高级别动画
目录前言AnimatedVisibilityisScrollingUpFABscaffoldanimateContentSizeCrossfade顶部气泡下弹前言 AnimatedVisibility 驱动可视性相关动画,即布局显隐 animateContentSize 内容变换动画相关 Crossfade 布局(或者页面)切换过渡动画 Animat…...
c++11 标准模板(STL)(std::unordered_set)(八)
定义于头文件 <unordered_set> template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_set;(1)(C11 起)namespace pmr { templ…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
