带有Spring-Boot应用程序的application- {profile} .properties的父属性

时间:2016-04-19 06:23:13

标签: spring spring-boot

在不同的配置文件之间共享共同属性,例如:临时文件和路径的路径位置在不同的env(tst,prd)之间保持相同。

是否有办法拥有父应用程序 - {parent} .properties,所有特定于配置文件的属性文件都可以从中继承属性。

这将有助于避免在所有应用程序中编写相同的属性 - {profile} .properties

此外,每个application-{profile}.properties都有类似的内容:

profileLocation=xxx
abc=${profileLocation}/tempPath

我可以将abc移动到一个公共位置吗?因为它在application- {profile} .properties

之前被加载,所以我无法进入application.properties

1 个答案:

答案 0 :(得分:2)

实际上, application.properties 在任何其他人之前加载并不完全正确。它们一起处理。要设置所有配置文件使用的公共属性,应使用普通的 application.properties 文件。您应该知道的两件主要内容如下所述。

案例1。可以通过配置文件特定配置覆盖放置在 application.properties 文件中的键。

common.path.for.all.envs=/some/path
default.path=/another/path

比你的 application-dev.properties 您可以覆盖某些值。

default.path=/dev/path

在运行时使用 dev配置文件,您的应用程序可以访问两个密钥。 common.path.for.all.envs的值将设置为/some/path,仅在主文件中声明,default.path将设置为/dev/path,因为您覆盖了配置文件配置中的属性。 / p>

案例2。 application.properties 文件中定义的值可以使用占位符作为配置文件配置中包含的值。例如,在 application.properties 中定义以下变量:

abc=${profileLocation}/tempPath

接下来,在 application-dev.properties 中声明缺少的变量:

profileLocation=xxx

然后使用开发配置文件运行,abc的值将设置为xxx/tempPath。如您所见,配置文件配置中声明的变量也可以在主 application.properties 文件中使用。