公司有些统计数据存储到MongoDB中,原来使用这些数据都是另一个项目提供查询接口,调用接口返回响应的数据。但是统计数据比较多,调用接口方式请求数据太慢,不如直接连数据库去查询。因为本项目使用SpringBoot框架,所以打算直接使用SpringBoot MongoDB Starter去连接MongoDB,没有使用原来公司自己封装的工具类。我们的MongoDB密码中带有@特殊符号,在连接的时候就报错。经过研究,有两种解决方案。
不使用spring.data.mongodb.url方式去连接,换成一下方式连接,这种方式的弊端是无法支持集群连接。
spring: data: mongodb: host: 127.0.0.1 port: 27017 authenticationDatabase: test # 指定验证数据库名称 database: test username: test password: han@1356
将密码中@其进行URL编码进行替换即可,只需要对@一个字符进行编码就可以。@编码后是%40,其实在报错日志中已经告诉你,可以这么处理错误。
spring: data: mongodb: uri: mongodb://test:han%401356@127.0.0.1/test