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

spring boot 工程整合mongodb,遇到的坑

首先说一下背景,因为其他的一个web工程有使用mongo,我想着给另外一个工程把mongo也加过来吧。也是最近做一个发送 丘比特信 的需求,觉得这个信应该是存到 mongodb。结果拿过来遇到了很大的坑,也是对版本对原理不了解吧。   

下面介绍一下引入的过程及遇到的坑和解决方案:

第一步,先说版本:

spring boot 的版本

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>

所以mongodb的版本也对应:

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

说一下涉及到mongo的一些类对应版本:

spring-data-mongodb-3.0.1.RELEASE

spring-boot-starter-data-mongodb-2.3.1.RELEASE

mongodb-driver-sync-4.0.4

mongodb-driver-core-4.0.4

bson-4.0.4

第二步,就是代码:

刚开始的想法是拿来即用

@Autowired
private MongoTemplate mongoTemplate;

注意:程序都起不来,因为找不到 MongoTemplate

然后自己通过@Bean创建MongoTemplate

@Beanpublic MongoClient mongoClient() {String connectionUserName = "";String connectionUserInfo = "";try {connectionUserName = URLEncoder.encode("XXX","UTF-8");connectionUserInfo = URLEncoder.encode("XXXXXX","UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}String connectionString = "mongodb://"+connectionUserName+":"+connectionUserInfo+"@XXXXXXXXX:XXXXXXXXX/XXXXXXXXX?authMechanism=SCRAM-SHA-1";return MongoClients.create(connectionString);}@Beanpublic MongoTemplate mongoTemplate() {return new MongoTemplate(mongoClient(), "XXXXXXXXX");}

注意:

网上的很多实例,连接串都是没有用户名和密码的。

"mongodb://username:password@host:port/dbname?authMechanism=SCRAM-SHA-1";

我们的密码是含有@符号,所以要encode,

username:password,这个中间的冒号一定不能encode,在这反复异常。冒号encode,提示找不到密码, 冒号不encode,提示用户名或者密码包含@或者冒号。

然后是禁用MongoDB数据库自动化配置:

@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) //刚开始只排除第一个类,反复报异常

第三步,使用

Query query = new Query(Criteria.where("baseCountryCode").is(country));List<BeforeVipCupidMongo> cupidList = mongoTemplate.find(query, BeforeVipCupidMongo.class);

总结:

  1. 版本对照,spring boot 的版本 和 mongo 的版本;
  2. spring boot 禁用 mongodb 数据库自动化配置;
  3. 如果自定义MongoTemplate,需要注意 connectionString,密码如果含有@或者:,一定要encode,而username:password这个之间的:是不能encode的;
  4. 操作mongo的方式

 参考资料:

SpringBoot与MongoDB版本对照参考_mongodb和springboot版本_一恍过去的博客-CSDN博客

https://www.cnblogs.com/huifeidezhuzai/p/16352608.html

https://www.cnblogs.com/zeussbook/p/15330735.html 

详解SpringBoot整合MongoDB技术分解_独善其身有始有终的技术博客_51CTO博客

相关文章:

spring boot 工程整合mongodb,遇到的坑

首先说一下背景&#xff0c;因为其他的一个web工程有使用mongo&#xff0c;我想着给另外一个工程把mongo也加过来吧。也是最近做一个发送 丘比特信 的需求&#xff0c;觉得这个信应该是存到 mongodb。结果拿过来遇到了很大的坑&#xff0c;也是对版本对原理不了解吧。 下面介…...

防抖函数(最全 最干净 最好理解)

1.应用场景 1.input输入框 输入远程查询 2.邮箱&#xff0c;手机号验证&#xff0c;用户名验证 3.resize等高评率场景 2.解决问题 高频场景带来的重复渲染 等问题 多次操作 只在操作结束后再执行操作函数 3.具体实现 3.1this问题&#xff08;因为settimeout是window的对…...

王小川,才是深「爱」李彦宏的那个人?

在推出中国首个类ChatGPT产品「文心一言」后&#xff0c;李彦宏在接受专访时断言&#xff0c;中国基本不会再出一个OpenAI了&#xff0c;「创业公司重新做一个ChatGPT其实没有多大意义&#xff0c;基于大语言模型开发应用机会很大&#xff0c;没有必要再重新发明一遍轮子。」 听…...

南京邮电大学通达学院2023《电子装配实习》报告

南京邮电大学通达学院2023《电子装配实习》报告 一 声明二 题目/实习报告提示三 例答 红笺寄 休遣玉人知 ——赠nmy 一 声明 南京邮电大学通达学院2023《电子装配实习》报告 答案更新时间:2023.04.10&#xff0c;已更新完成&#xff0c;如无错误不在更新 由于作者解答能力有限…...

Linux--tty

Linux 终端(TTY) TTY 是 Teletype 或 Teletypewriter 的缩写&#xff0c;原来是指电传打字机&#xff0c;后来这种设备逐渐键盘和显示器取代。不管是电传打字机还是键盘显示器&#xff0c;都是作为计算机的终端设备存在的&#xff0c;所以 TTY 也泛指计算机的终端(terminal)设…...

一位女程序员的自述:我是如何成为前端工程师的

今天&#xff0c;我想和大家分享一下我的职场经历&#xff1a;我是如何成为一名前端工程师的&#xff0c;以及我为什么会选择这个职业。此外&#xff0c;大家比较关心的是我们为什么要出国工作呢&#xff1f;也是想给自己的职业生涯做一个阶段性的总结&#xff0c;尤其是作为一…...

C++命名空间详解

1.什么是命名空间 在c中&#xff0c;名称&#xff08;name&#xff09;可以是符号常量、变量、函数、结构、枚举、类和对象等等。工程越大&#xff0c;名称互相冲突性的可能性越大。另外使用多个厂商的类库时&#xff0c;也可能导致名称冲突。为了避免&#xff0c;在大规模程序…...

HDMI EDID概念梳理

EDID概念梳理&#xff1a; EDID数据格式&#xff1a; EDID包含两个部分&#xff0c;基本的EDID只有128个字节&#xff0c;还有128字节的扩展EDID&#xff0c;扩展部分不是必须有的。那通常电视都有扩展EDID。那EDID的详细定义在规范里面都可以找到&#xff0c;主要有以下几部分…...

Android端推送消息之极光推送

推送方式 轮询 --实现方式: 周期性主动获取网络中的数据; --缺点: 费电, 费流量; SMS --实现方式: 服务器端向手机端发送短信, 手机监听短信广播, 将拦截的短信信息进行显示; --优点: 省电, 省流量, 在没有网络的偏远地点也能接收到推送消息; --缺点: 费钱, 一毛钱一条;…...

2023测试工程师全新技术栈,吃透这些,起薪就15k

相信每个准备软件测试面试的同学&#xff0c;不管你是大学刚毕业&#xff0c;满心憧憬着进入公司实习、非计算机行业转行软件测试、自学测试就业还是培训后就业&#xff0c;都会面临着众多的疑问和不解&#xff0c;那就是该怎么走出着第一步&#xff0c;今天本文一次性告诉你&a…...

十、CNN卷积神经网络实战

一、确定输入样本特征和输出特征 输入样本通道数4、期待输出样本通道数2、卷积核大小33 具体卷积层的构建可参考博文&#xff1a;八、卷积层 设定卷积层 torch.nn.Conv2d(in_channelsin_channel,out_channelsout_channel,kernel_sizekernel_size,padding1,stride1) 必要参数&a…...

App 自动化测试

一、移动端测试基础 1 移动端自动化环境搭建 1.1 java安装 1.2 Android SDK安装 SDK (Software Development Kit) 软件开发工具包是软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。Android SDK 就是 Android 专属的软件开…...

考研英语知识点

考研英语知识点 一、在考研英语考试中&#xff0c;常考的英语时态 1.一般现在时 (Simple Present Tense) 一般现在时指的是现在正在进行或经常发生的事情。它用于描述普遍真理&#xff0c;频繁的习惯&#xff0c;以及现在正在发生的事情。例如&#xff1a;我每天早上六点起床…...

IPSEC实验(IPSECVPN点到点,DSVPN,IPSECVPN旁挂)

目录 一、复现实验1、防火墙的IPSECVPN点到点实验-1,拓扑图的搭建-2&#xff0c;配置IP,开通ping,并且设置策略-3&#xff0c;在网络中的IPSEC进行配置第一阶段&#xff1a;发出的UDP500流量第二阶段 发出的ESP流量二台防火墙建立策略禁用其它策略&#xff0c;在IPSEC上配置策略…...

从4k到42k,软件测试工程师的涨薪史,给我看哭了

清明节一过&#xff0c;盲猜大家已经无心上班&#xff0c;在数着日子准备过五一&#xff0c;但一想到银行卡里的余额……瞬间心情就不美丽了。 最近&#xff0c;2023年高校毕业生就业调查显示&#xff0c;本科毕业月平均起薪为5825元。调查一出&#xff0c;便有很多同学表示自己…...

tomcat作业

简述静态网页和动态网页的区别。 静态网页和动态网页是网站的两种基本类型。它们的主要区别在于它们如何生成和呈现网页内容。 静态网页是一种由服务器直接发送给用户的固定HTML文件&#xff0c;其中包含所有网页的内容和样式。这些页面不会随着用户的操作而改变&#xff0c;它…...

除了Java,还可以培训学习哪些IT技术?

除了Java&#xff0c;还可以培训学习哪些IT技术&#xff1f; 转行IT学Java似乎已经成为很多人的首选&#xff0c;原因无非是开发技术含量高、开发有前景、开发是一个互联网企业的核心岗位&#xff0c;最重要的是开发薪资待遇高。但其实只单纯因为薪资选择Java的话&#xff0c;小…...

Mysql优化(一)-- sql语句优化概述及数据库优化

1. sql语句优化 1.1 优化查询过程中的数据访问 访问数据太多导致查询性能下降确定应用程序是否在检索大量超过需要的数据&#xff0c;可能是太多行或列确认MySQL服务器是否在分析大量不必要的数据行避免犯如下SQL语句错误 查询不需要的数据。解决办法&#xff1a;使用limit解…...

深度学习快速参考:1~5

原文&#xff1a;Deep Learning Quick Reference 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;只关心如何实现目…...

软件设计师笔记-----程序设计语言与语言处理程序基础

文章目录 七、程序设计语言与语言处理程序基础7.1、编译与解释&#xff08;低频&#xff09;7.2、文法&#xff08;低频&#xff09;7.3、有限自动机与正规式&#xff08;几乎每次都会考到&#xff09;有限自动机正规式 7.4、表达式&#xff08;偶尔考到&#xff09;7.5、传值和…...

Bubble Navigation实战:构建现代化电商App导航系统的终极指南

Bubble Navigation实战&#xff1a;构建现代化电商App导航系统的终极指南 【免费下载链接】bubble-navigation &#x1f389; [Android Library] A light-weight library to easily make beautiful Navigation Bar with ton of &#x1f3a8; customization option. 项目地址…...

TVA智能体范式的工业视觉革命(4)

重磅预告&#xff1a;本专栏将独家连载系列丛书《智能体视觉技术与应用》部分精华内容&#xff0c;该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著&#xff0c;特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“…...

如何从零开始MemLabs:完整的环境搭建与工具配置教程

如何从零开始MemLabs&#xff1a;完整的环境搭建与工具配置教程 【免费下载链接】MemLabs Educational, CTF-styled labs for individuals interested in Memory Forensics 项目地址: https://gitcode.com/gh_mirrors/me/MemLabs MemLabs是一套面向内存取证初学者的CTF风…...

C++/WinRT安全编程:Windows Runtime安全模型和最佳实践

C/WinRT安全编程&#xff1a;Windows Runtime安全模型和最佳实践 【免费下载链接】cppwinrt C/WinRT 项目地址: https://gitcode.com/gh_mirrors/cp/cppwinrt C/WinRT是Windows Runtime&#xff08;WinRT&#xff09;的现代C语言投影&#xff0c;它提供了类型安全的API访…...

Linux|操作系统|zfs文件系统的使用详解

一、 前言概述 书接上回&#xff0c;https://zskjohn.blog.csdn.net/article/details/160741859 Linux|操作系统|最新版openzfs编译记录&#xff0c;上文将zfs文件系统编译安装完毕了&#xff0c;也做了一些总结&#xff0c;但总结的不够全面&#xff0c;本文在做一些补充&am…...

基于MCP协议为Gemini模型构建安全可控的外部工具链

1. 项目概述&#xff1a;当MCP遇上Gemini&#xff0c;一个AI代理的“瑞士军刀”诞生了如果你最近在折腾AI Agent&#xff08;智能体&#xff09;或者RAG&#xff08;检索增强生成&#xff09;应用&#xff0c;大概率听说过“Model Context Protocol”&#xff0c;也就是MCP。简…...

直播字幕难题终结者:OBS实时字幕插件完全攻略

直播字幕难题终结者&#xff1a;OBS实时字幕插件完全攻略 【免费下载链接】OBS-captions-plugin Closed Captioning OBS plugin using Google Speech Recognition 项目地址: https://gitcode.com/gh_mirrors/ob/OBS-captions-plugin 你是否曾为直播观众听不清你的声音而…...

光模块PCB设计学习记录01

/*光模块布局&#xff0c;有错误可以指出&#xff0c;有不足可以补充*/ 光模块PCB布局规划 01导入板框与结构约束导入 这里的outline板框一般由机械提供.dxf文件&#xff0c;板框决定PCB尺寸、器件可用区域和接口位置&#xff1b;成功导入dxf文件后&#xff0c;打开Board Geo…...

AI Agent创业融资指南:投资人最看好的Agent项目特征与商业模式

AI Agent创业融资指南&#xff1a;投资人最看好的Agent项目特征与商业模式 各位技术创业者、产品经理、投资人朋友&#xff0c;晚上好&#xff01;我是深耕AI大模型落地与Agent赛道创业3年多、前后帮2个种子轮项目拿到近5000万天使/A轮融资、现在自己正在做垂直医疗场景诊断Age…...

CodeDroidAI:本地化AI代码助手的设计原理与工程实践

1. 项目概述&#xff1a;一个面向开发者的AI代码助手最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“FMXExpress/CodeDroidAI”。光看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但如果你是个经常和代码打交道的开发者&#xff0c;尤其是对提升编码效率、探索A…...