我有
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
在我的 pom.xml 中,因此我的 Spring Boot 应用程序会在应用程序启动时尝试连接到本地主机上的 MongoDB。
我也有
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<scope>test</scope>
</dependency>
因此,当我运行单元测试时,会使用嵌入式 MongoDb。
出于集成测试的目的,如果应用程序以“测试”事件配置文件启动,我还想使用嵌入式 MongoDB。
如此有效,我想删除 <scope>test</scope>
来自嵌入依赖项,并在事件配置文件为“测试”时使用嵌入版本。
我怎样才能做到这一点?
最佳答案
您正在寻找的解决方案很可能是添加嵌入式 mongo 数据库的配置排除。尝试按照以下步骤操作:
- 假设默认配置文件用于开发目的,因此您想在其中运行嵌入式 mongo。 EmbeddedMongoAutoConfiguration 是负责配置嵌入式mongo 数据库的类。它在嵌入式 mongo 类位于类路径上时运行,因此只需按照您指出的那样删除测试范围
为生产、docker 或任何适合您的内容创建配置文件,并确保在此配置文件中的 yml(或属性文件)中添加以下条目:
spring.autoconfigure.exclude: org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration
请记住,嵌入式 mongo 现在位于您的类路径中,这对于生产环境而言可能是不需要的,因此您可能还想配置 maven 以将其排除在某些 maven 配置文件中。
关于spring - 当事件配置文件为 "test"时使用嵌入式 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45032261/