如何从 Spring Boot 连接到在线 MongoDB 数据库?

Posted

技术标签:

【中文标题】如何从 Spring Boot 连接到在线 MongoDB 数据库?【英文标题】:How to connect to online MongoDB database from Spring Boot? 【发布时间】:2017-11-29 09:16:42 【问题描述】:

我想从 Spring Boot 应用程序内部连接到托管在 Mlab 的在线 MongoDB 数据库。

我已经用 URI 配置了 application.properties:

spring.data.mongodb.uri = mongodb://myuser:mypassword@ds129532.mlab.com:29532/consilium-dev

但是,应用程序仍然连接到本地 MongoDB 数据库。如何让它连接到 Mlab 数据库?

解决方案: 资源文件夹不在正确的文件夹中。它应该在 src/java/resources

【问题讨论】:

你用的是哪个版本的spring data和mongodb java驱动? @harshavmb,我使用的是 Spring Boot 1.5.4,mLab 的 MongoDB 版本是 3.2.14 你能在你的 application.properties 中试试这个# mongo connections spring.data.mongodb.host=ds129532.mlab.com spring.data.mongodb.port=29532 spring.data.mongodb.username=myuser spring.data.mongodb.password=mypassword spring.data.mongodb.database=consilium-dev 吗? 你也可以试试这个spring.data.mongodb.uri=mongodb://myuser:mypassword@ds129532.mlab.com:29532 spring.data.mongodb.database=consilium-dev 这只是写同一件事的不同方式。您的应用程序可能没有正确获取配置文件。你确定它在正确的位置吗?您可以通过添加 @Value("$something") String something; 并将 something 标记添加到属性文件然后打印出来来轻松测试它。 【参考方案1】:

在我的例子中,spring boot 在我的 PC 中进行测试时连接到 application.properties 文件中指定的 uri,但一旦部署到 heroku,它总是连接到 localhost,而不管 application.properties 中指定的内容如何。解决方案是在将 jar 部署到服务器时将数据库 uri 作为命令行参数传递,因为这将优先于属性。为此,请创建一个 Procfile,如下所示:

web: java -Dserver.port=$PORT -Dspring.data.mongodb.uri=mongodb://<user>:<pass>@<host>:<port>/<db> -jar my-app.jar

并使用 heroku 工具包,运行以下命令。

heroku deploy:jar -j my-app.jar -i Procfile --app <host-name>

【讨论】:

【参考方案2】:

application.properties 中使用数据库值不适用于在线 mongodb。 它适用于本地数据库。但是一旦我谷歌并在网上找到了一个示例,他们在下面以这种方式添加它并且它对我有用。

spring.data.mongodb.uri=mongodb://<USERNAME>:<PASSWORD>@ds261828.mlab.com:61828/springdb.

【讨论】:

以上是关于如何从 Spring Boot 连接到在线 MongoDB 数据库?的主要内容,如果未能解决你的问题,请参考以下文章

从 Spring Boot 连接到 Heroku Postgres

从 Spring Boot 应用程序连接到 mysql 容器

从 Spring Boot 连接到 AWS SQS 时出错

无法从 docker 容器内的 Spring Boot 连接到 Redis

如何让 Spring Boot 自动重新连接到 PostgreSQL?

无法从 Spring Boot 应用程序连接到 Bigtable