在我的项目中,我想使用特定于环境的属性文件。例如,如果我将它运行到开发中,它应该使用application.dev.properties,对于生产它应该使用application.prod.properties等。
我的资源文件夹中有两个文件。
我在每个文件中都有一个如下所示的属性。
对于Prod
server.database.host=192.168.1.1
对于Dev
server.database.host=192.168.12.125
我有一个类似下面的课程
public class DataSource {
@Value(${server.database.host})
String host;
上面的代码总是采用prod设置(application.properties)文件,即使我为dev提供正确的参数,如--spring.profiles.active=dev
以下是我用来加载dev属性文件的命令。
java -jar myjar.jar --spring.profiles.active=dev
它还会打印出活动配置文件是dev,但它始终连接到prod db。
答案 0 :(得分:26)
我发现了一些问题:
@Value
属性名称应为String
,如@Value("${server.database.host}")
application-{profile}.properties
格式,例如application-dev.properties
-D
<{1}}传递个人资料,例如java -Dspring.profiles.active=dev -jar app.jar
答案 1 :(得分:3)
尝试在运行配置中添加vm参数:
-Dspring.profiles.active=dev
答案 2 :(得分:1)
如果在Eclipse或STS上运行,请使用以下步骤:
答案 3 :(得分:0)
您应该指定运行哪个配置文件,如下所示:
mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
另请参阅文档:https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-profiles.html