我有一个spring启动应用程序,有数据库的东西测试,我支持mysql和mssql。
我有src/text/resources/application-mysql.properties
和src/text/resources/application-mssql.properties
当我运行测试时,我可以设置什么环境变量来告诉Spring使用哪个测试属性文件?
格式为application-*.properties
的属性文件使用Spring profile激活。顺便说一下,YAML文件也是如此!重要的是要知道application.properties
仍然是首先加载的,任何特定于配置文件的属性将覆盖先前加载的属性(这是Spring配置文件的全部意义)。
有多种方法来启用配置文件:
-
要回答您的问题,您可以设置
SPRING_PROFILES_ACTIVE
环境变量来启用配置文件。例如:export SPRING_PROFILES_ACTIVE=mysql
。您还可以指定多个配置文件(它们以相同的顺序加载),用逗号分隔它们:export SPRING_PROFILES_ACTIVE=localdefaults,local
。 -
您也可以使用JVM参数
spring.profiles.active
。该值遵循与环境变量相同的格式。例如:-Dspring.profiles.active=mysql
. -
您可以在测试类上使用
@ActiveProfiles
注释。例如:
// Other annotations...
@ActiveProfiles("mysql")
public class MyTest {
- 如果您想在构建期间启用概要文件,您可以在Maven中设置
spring.profiles.active
属性。例如:
<profiles>
<profile>
<id>mysql</id>
<properties>
<spring.profiles.active>mysql</spring.profiles.active>
</properties>
</profile>
...
</profiles>
- 这是我最近学到的一个奇怪的。您还可以在属性文件中使用
spring.profiles.active
设置活动配置文件。我想这有它的用途,但我从未使用过这种方法。
阅读我所涵盖的所有内容:
- https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html howto.properties-and-configuration
- https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/context/ActiveProfiles.html