网站建设工作建议,企业网站制作公司推荐,互联网公司手机网站,浙江建设监理协会网站首先说一下背景#xff0c;因为其他的一个web工程有使用mongo#xff0c;我想着给另外一个工程把mongo也加过来吧。也是最近做一个发送 丘比特信 的需求#xff0c;觉得这个信应该是存到 mongodb。结果拿过来遇到了很大的坑#xff0c;也是对版本对原理不了解吧。 下面介… 首先说一下背景因为其他的一个web工程有使用mongo我想着给另外一个工程把mongo也加过来吧。也是最近做一个发送 丘比特信 的需求觉得这个信应该是存到 mongodb。结果拿过来遇到了很大的坑也是对版本对原理不了解吧。 下面介绍一下引入的过程及遇到的坑和解决方案 第一步先说版本 spring boot 的版本 groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-parent/artifactId
version2.3.1.RELEASE/version所以mongodb的版本也对应 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-mongodb/artifactIdversion2.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:connectionUserInfoXXXXXXXXX:XXXXXXXXX/XXXXXXXXX?authMechanismSCRAM-SHA-1;return MongoClients.create(connectionString);}Beanpublic MongoTemplate mongoTemplate() {return new MongoTemplate(mongoClient(), XXXXXXXXX);} 注意 网上的很多实例连接串都是没有用户名和密码的。 mongodb://username:passwordhost:port/dbname?authMechanismSCRAM-SHA-1; 我们的密码是含有符号所以要encode username:password这个中间的冒号一定不能encode在这反复异常。冒号encode提示找不到密码 冒号不encode提示用户名或者密码包含或者冒号。 然后是禁用MongoDB数据库自动化配置 SpringBootApplication(exclude {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class}) //刚开始只排除第一个类反复报异常第三步使用 Query query new Query(Criteria.where(baseCountryCode).is(country));ListBeforeVipCupidMongo cupidList mongoTemplate.find(query, BeforeVipCupidMongo.class); 总结 版本对照spring boot 的版本 和 mongo 的版本spring boot 禁用 mongodb 数据库自动化配置如果自定义MongoTemplate需要注意 connectionString密码如果含有或者:一定要encode而username:password这个之间的:是不能encode的操作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博客