Spring启动和配置文件

时间:2016-03-05 14:39:18

标签: java spring spring-boot

我有一些配置的Spring Boot应用程序。 我想为devproduction指定不同的配置值。 我的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具有正确的值。 是否可以使用类似配置文件来更改配置?

3 个答案:

答案 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)

有多种方法可以做到这一点。

  1. 使用maven配置文件和资源插件,通过使用您的个人资料特定设置替换application.properties中的属性来提供特定于环境或配置文件的属性。

    This will help you getting started

  2. 使用Spring靴子构建支持Externalizing properties environment specific

答案 2 :(得分:1)

您可以使用spring.profiles.active Spring属性来选择要使用的application-[environment].properties文件。然后创建多个文件,每个环境一个文件。要设置环境,只需在Java参数中传递此--spring.profiles.active=development