当前位置: 首页 > news >正文

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 协议 前提&#xff1a;此篇文章是对上一篇文章的实战和项目中相关配置的使用&#xff0c;我这边针对 MongoDB 原有基础上做了增强&#xff0c;简化了 MongoDB 配置 SSL / TLS 协议上的支…...

C语言static关键字

目录static修饰局部变量static修饰全局变量static修饰函数static是C语言的关键字&#xff0c;它有静态的意思static的三种用法&#xff1a;修饰局部变量修饰全局变量修饰函数 static修饰局部变量 我们先看一个程序&#xff1a; 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的用法是&#xff1a;substr&#xff08;目标字符串&#xff0c;从字符串的哪个位置开始&#xff0c;然后返回往后的几个字符&#xff09;strchr的用法是&#xff1…...

Java8(JDK1.8)新特性

一、Java8(JDK1.8)新特性 1、Lamdba表达式 2、函数式接口 3、方法引用和构造引用 4、Stream API 5、接口中的默认方法和静态方法 6、新时间日期API 7、OPtional 8、其他特性 二、java8&#xff08;JDK1.8&#xff09;新特性简介 1、速度快&#xff1b; 2、代码少、简…...

【C语言】指针的定义和使用

指针一、什么是指针二、指针类型三、指针和数组的关系四、空指针五、野指针一、什么是指针 指针&#xff08;Pointer&#xff09;是编程语言中的一个对象&#xff0c;通过地址直接指向内存中该地址的值。由于通过地址能够找到所需的变量存储单元&#xff0c;可以说地址指向该变…...

Parameter ‘zpspid‘ not found

异常&#xff1a;nested exception is org.apache.ibatis.binding.BindingException: Parameter testypid not found. Available parameters are [ztpsXmjcxx, pageable, param1, param2]分析&#xff1a;以为是xml文件中没有对应的字段&#xff0c;一细看了几遍是有这个字段的…...

23、高自由度下的E类波形理论计算(附Matlab代码)

23、高自由度下的E类波形理论计算&#xff08;附Matlab代码&#xff09; 0、代码 任意占空比、电压导数条件下的E类波形与阻抗条件计算Matlab 注意修改路径&#xff0c;我这边是&#xff1a;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#…...

软件测试:用“bug”来表示“在电脑程序里的错误”

计算机基础知识计算机&#xff08;personal computer&#xff09;俗称电脑&#xff08;pc&#xff09;&#xff0c;是现代一种用于高速计算的电子机器&#xff0c;可以进行数值计算&#xff0c;又可以进行逻辑判断&#xff0c;还具有存储记忆功能&#xff0c;且能够按照程序的运…...

Git命令

git init # 初始化本地git仓库&#xff08;创建新仓库&#xff09;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是一种流行的编程语言&#xff0c;拥有强大的异常处理机制&#xff0c;以帮助开发人员在程序出现异常时更好地处理错误情况。本文将介绍Java异常的概念和类型。异常的概念在Java中&#xff0c;异常是指在程序运行时发生的错误或异常情况。例如&#xff0c;当程序试图打开不…...

【Leedcode】环形链表必备的面试题和证明题(附图解)

环形链表必备的面试题和证明题&#xff08;附图解&#xff09; 文章目录环形链表必备的面试题和证明题&#xff08;附图解&#xff09;前言一、第一题1.题目2.思路3.代码4.延伸问题(1)证明题一&#xff1a;(2)证明题二&#xff1a;二、第二题1.题目2.思路延伸的证明题总结前言 …...

Vulnhub靶场----7、DC-7

文章目录一、环境搭建二、渗透流程三、思路总结一、环境搭建 DC-7下载地址&#xff1a;https://download.vulnhub.com/dc/DC-7.zip kali&#xff1a;192.168.144.148 DC-7&#xff1a;192.168.144.155 二、渗透流程 nmap -T5 -A -p- -sV -sT 192.168.144.155思路&#xff1a; …...

【Unity VR开发】结合VRTK4.0:创建滑块

语录&#xff1a; 只有经历地狱般的磨练&#xff0c;才能炼出创造天堂的力量。 前言&#xff1a; 滑块是一个非常简单的控件&#xff0c;它允许通过沿有限的驱动轴滑动 Interactable 来选择不同的值。我们将使用线性驱动器创建一个滑块控件&#xff0c;该控件允许我们根据与滑…...

Latex中的表格(2)

Latex中的表格一、一个加脚注的三线表的例子二、表格中加注释三、并排的表格3.1 使用小页环境并排表格3.2 使用子表格并排表格四、一个复杂的表格五、一个长表格这篇文章主要罗列一些特殊的表格例子。内容来自&#xff1a;一篇北师大学位论文模板&#xff0c;详见https://githu…...

(七)输运定理

本文主要内容包括&#xff1a;1. 物质积分2. 曲线上物质积分的时间变化率3. 曲面上物质积分的时间变化率4. 体积域上物质积分的时间变化率 (Reynolds 输运定理)1. 物质积分 考虑 t0t_0t0​ 时刻参考构型中由物质点 X⃗\vec{X}X所形成的 物质曲线 ct0c_{t_0}ct0​​、物质曲面 …...

ABBYYFineReader15免费电脑pdf文档文字识别软件

ABBYYFineReader是一款OCR文字识别软件&#xff0c;它可以对图片、文档等进行扫描识别&#xff0c;并将其转换为可编辑的格式&#xff0c;比如Word、Excel等&#xff0c;操作也是挺方便的。 我们在官网找到该软件并进行下载&#xff0c;打开软件后&#xff0c;选择转换为“Mic…...

顺序表(超详解哦)

全文目录引言顺序表定义静态顺序表动态顺序表动态顺序表的接口实现顺序表的初始化与销毁顺序表尾插/尾删顺序表头插/头删顺序表在pos位置插入/删除顺序表的打印顺序表中的查找总结引言 在生产中&#xff0c;为了方便管理数据&#xff0c;我们经常会需要将一些数据连续的存储起…...

Compose-Animation高级别动画

目录前言AnimatedVisibilityisScrollingUpFABscaffoldanimateContentSizeCrossfade顶部气泡下弹前言 AnimatedVisibility 驱动可视性相关动画&#xff0c;即布局显隐 animateContentSize 内容变换动画相关 Crossfade 布局&#xff08;或者页面&#xff09;切换过渡动画 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…...

Python每日一练(20230225)

目录 1. 整数反转 2. 求最大公约数和最小公倍数 最大公约数 最小公倍数 3. 单词搜索 II 附录&#xff1a; DFS 深度优先搜索算法 BFS 广度优先搜索算法 BFS 和 DFS 的区别 1. 整数反转 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。…...

基于博客系统的测试用例

登陆界面博客预览页博客详情页博客编辑页...

C语言运算符算术运算符关系运算符

C 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 语言内置了丰富的运算符&#xff0c;并提供了以下类型的运算符&#xff1a; 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 本章将逐一介绍算术运算符、关系运算符、逻辑运算符、位运…...

C语言 深度剖析数据在内存中的存储

目录数据类型详细介绍整形在内存中的存储&#xff1a;原码&#xff0c;反码&#xff0c;补码大小端字节序介绍及判断浮点型在内存中的存储解析数据类型详细介绍整形&#xff1a;1.为什么char类型也会归类到整形家族当中去呢&#xff1f;字符存储和表示的时候本质上使用的是ASCI…...

MyBatis快速开发

查询user表中的所有数据 步骤&#xff1a; 创建user表 打开Navicat&#xff0c;新建查询&#xff0c;将下面SQL代码复制粘贴并执行&#xff1a; create database mybatis; use mybatis;drop table if exists tb_user;create table tb_user(id int primary key auto_incremen…...

大数据常见应用场景及架构改进

大数据常见应用场景及架构改进大数据典型的离线处理场景1.大数据数据仓库及它的架构改进2.海量数据规模下的搜索与检索3.新兴的图计算领域4.海量数据挖掘潜在价值大数据实时处理场景大数据典型的离线处理场景 1.大数据数据仓库及它的架构改进 对于离线场景&#xff0c;最典型…...

【华为OD机试模拟题】用 C++ 实现 - 挑选字符串(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 货币单位换算(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 选座位(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 停车场最大距离(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 重组字符串(2023.Q1) 【华为OD机试模…...

程序员是世界上最理性、最睿智的群体,耶稣也反驳不了我,我说的!

有人说&#xff0c;程序员是吃青春饭的&#xff0c;35 岁就提前退休了。 猛一看&#xff0c;这句话是对的&#xff1b;仔细一看&#xff0c;这句话是不对的。 说它对&#xff0c;是因为现实中确实有很多程序员 35 岁就被毕业了&#xff1b;说它不对&#xff0c;是因为 35 岁以…...

人工智能到底是什么?

人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是一种利用计算机科学和统计学理论和技术来实现人类智能的一门交叉学科&#xff0c;旨在使计算机系统能够模拟、扩展和增强人类的智能能力&#xff0c;使计算机能够像人类一样思考、学习、决策和执行任务…...

在动态规划的海洋中遨游(三)

前言&#xff1a;\textcolor{Green}{前言&#xff1a;}前言&#xff1a; &#x1f49e; 好久没写题&#xff0c;有点生疏了。这也是给大家提一个醒&#xff0c;一定要一直坚持下去&#xff0c;哪怕每天只做一点点。&#x1f49e; 算法类别一、算法介绍原理适用的情况做题步骤二…...