我有一些配置的Spring Boot应用程序。
我想为dev
和production
指定不同的配置值。
我的application.properties
文件如下所示:
spring.datasource.url=jdbc:mysql://devhost:devport/devschema
spring.datasource.username=devuser
spring.datasource.password=mypwd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
此文件位于Openshift上的git repo中。每次我提交,Openshift开始部署应用程序,所以我需要application.properties
具有正确的值。
是否可以使用类似配置文件来更改配置?
答案 0 :(得分:4)
使用application-dev.properties
格式为不同的配置文件创建不同的属性文件,例如dev
SPRING_PROFILES_ACTIVE
,并将您的个人资料特定配置放入其中。然后,当您运行spring boot应用程序时,使用spring.profiles.active
环境变量或build
系统属性激活您想要的配置文件。
由于您正在使用Openshift,因此可以在.openshift/action_hooks
目录的export JAVA_OPTS_EXT=-Dspring.profiles.active="dev"
文件中导出envirnemnt变量。像这样:
rhc env set
更好的方法是使用rhc env set SPRING_PROFILES_ACTIVE=dev -a App_Name
命令启用一个特定的配置文件:
var arrayOfStrings = ["2.12.5", "2.12.10", "2.2", "2.11.8"]
arrayOfStrings.sortInPlace {
let v0 = ($0 as NSString).componentsSeparatedByString(".")
let v1 = ($1 as NSString).componentsSeparatedByString(".")
for i in 0..<min(v0.count, v1.count) {
if v0[i] != v1[i] {
return Int(v0[i]) < Int(v1[i])
}
}
return v0.count < v1.count
}
您可以在openshift here中阅读有关使用环境变量的更多信息。
答案 1 :(得分:1)
有多种方法可以做到这一点。
使用maven配置文件和资源插件,通过使用您的个人资料特定设置替换application.properties
中的属性来提供特定于环境或配置文件的属性。
使用Spring靴子构建支持Externalizing properties environment specific
答案 2 :(得分:1)
您可以使用spring.profiles.active
Spring属性来选择要使用的application-[environment].properties
文件。然后创建多个文件,每个环境一个文件。要设置环境,只需在Java参数中传递此--spring.profiles.active=development
。