2017-05-31 88 views
0

是否可以从一个地方访问不同application.properties的环境变量。实际上,我们正在构建这个软件,为不同的项目提供不同的application.properties,比如用户资产。所以有可能让所有的环境都在一个外部地方变化。如果是的话,它将如何被访问?如何在spring启动时从外部访问环境变量?

+1

如果你谈论的多个应用程序,你可以用弹簧云配置做到这一点。否则你的问题应该更精确。 – Patrick

回答

0

如果它是一个环境变量,那么我认为多个应用程序可以访问同一个变量。

但是如果它里面的application.properties文件,那么我认为它是不可能的。

不仅如此,如果您确实认为一个应用程序需要访问另一个应用程序的application.properties,那么我认为这不是一个正确的方法。

相反,您应该对配置进行外部化(可能使用像spring-cloud-config这样的配置服务器)并共享这些应用程序之间的公共属性。

1

您将拥有一个application.properties文件,该文件定义了在每种情况下都不会改变的变量。

application.properties

server.error.whitelabel.enabled=true #Just an example 

然后你可以有不同的名称,如application-active.properties单独application.properties。此文件将添加到基础application.properties文件。

application-active.properties

example.enviroment.variable=${I_AM_AN_ENVIROMENT_VARIABLE} 

然后,你可以有一个具有相同的属性名称不同application.properties文件,在这种情况下example.enviroment.variable

application-dev.properties

example.enviroment.variable=${I_AM_A_DIFFERENT_ENVIRONMENT_VARIABLE} 

然后在你的代码,你只需要抓住这取决于当前配置文件example.enviroment.variable财产,它会抓住正确的环境变量。

指定什么application.properites看using profiles in spring-boot.