第一个实例是嵌入式MongoDb,第二个实例是实时MongoDb . 它如何配置使用 spring 数据和 spring 启动 . 如何通过属性文件轻松切换这些实例?
UPDATE
-
默认情况下,应用程序应启动内置数据库并将数据存储到APPDIR / db目录中
-
应该可以通过配置mongo.url属性让应用程序知道将使用外部数据库 . 在这种情况下,无需启动内部数据库 . 而不应该使用外部连接
请粘贴一些配置 .
UPDATE 我有:
<!--Embedded MongoDB-->
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<version>1.50.5</version>
</dependency>
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.uri=mongodb://localhost/test
spring.data.mongodb.database=test
# EMBEDDED MONGODB (EmbeddedMongoProperties)
#spring.mongodb.embedded.storage.databaseDir=c:/db
#spring.mongodb.embedded.version=3.2.2
如果我将指定外部mongodb,那么我希望嵌入式mongodb不应该启动 .
java.io.IOException: Could not start process: <EOF>
at de.flapdoodle.embed.mongo.AbstractMongoProcess.onAfterProcessStart(AbstractMongoProcess.java:79) ~[de.flapdoodle.embed.mongo-1.50.5.jar!/:?]
at de.flapdoodle.embed.process.runtime.AbstractProcess.<init>(AbstractProcess.java:114) [de.flapdoodle.embed.process-1.50.2.jar!/:?]
at de.flapdoodle.embed.mongo.AbstractMongoProcess.<init>(AbstractMongoProcess.java:53) [de.flapdoodle.embed.mongo-1.50.5.jar!/:?]
at de.flapdoodle.embed.mongo.MongodProcess.<init>(MongodProcess.java:50) [de.flapdoodle.embed.mongo-1.50.5.jar!/:?]
at de.flapdoodle.embed.mongo.MongodExecutable.start(MongodExecutable.java:44) [de.flapdoodle.embed.mongo-1.50.5.jar!/:?]
at de.flapdoodle.embed.mongo.MongodExecutable.start(MongodExecutable.java:34) [de.flapdoodle.embed.mongo-1.50.5.jar!/:?]
at de.flapdoodle.embed.process.runtime.Executable.start(Executable.java:101) [de.flapdoodle.embed.process-1.50.2.jar!/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_05]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_05]
at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_05]
1 回答
我想你可以使用Spring配置文件 .
这是documentation .
更新
Note : 我将在上面提到的文档中说明我将在下面讨论的所有内容......您应该仔细阅读本文档 . 这个文档很棒(不是开玩笑) .
来自Appendix A. Common application properties(Spring启动文档)
以下是在
application.properties
中配置远程MongoDB实例的方法:以下是如何在
application.properties
中配置嵌入式MongoDB实例:来自Change configuration depending on the environment(Spring启动文档)
您可以将MongoDB嵌入式配置定义为
application-dev.properties
,将MongoDB远程配置定义为application-prod.properties
更新II:回归
我假设您在类(从documentation)开始嵌入式MongoDB实例:
您可以将 spring 配置文件分配给此类(来自documentation):
这样,只有在选择
dev
profile时才会启动嵌入式MongoDB .