如何从 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 容器
无法从 docker 容器内的 Spring Boot 连接到 Redis