我有
<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。
出于集成测试的目的,如果应用程序是使用"test"活动配置文件启动的,我也想使用嵌入式MongoDB。
如此有效地,我想从嵌入依赖项中删除<scope>test</scope>
,并在活动配置文件为"测试"时使用嵌入版本。
我怎样才能做到这一点?
您正在寻找的解决方案很可能是添加嵌入式 mongo 数据库的剖析排除项。请尝试按照以下步骤操作:
- 假设默认配置文件用于开发目的,因此您希望在其中运行嵌入式 mongo。EmbeddedMongoAutoConfiguration 是负责配置嵌入式 mongo 数据库的类。当嵌入式 mongo 类位于类路径上时,它会运行,因此只需删除您指出的测试范围
-
为生产,docker或任何适合您的配置文件创建一个配置文件,并在此配置文件中确保在yml(或属性文件(中添加以下条目:
spring.autoconfigure.exclude: org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration
-
请记住,嵌入式 mongo 现在在您的类路径上,这对于生产环境可能不需要,因此您可能还希望配置 maven 以在某些 maven 配置文件中排除它。
使用弹簧轮廓
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-set-active-spring-profiles
@ActiveProfiles("test")