如何使用spring mvc(uat,stage)以编程方式获取域系统环境变量(env)?

时间:2017-04-17 07:21:57

标签: spring spring-mvc

我想基于服务器环境自动加载属性文件,如stage,uat,qa等使用spring 4的编程方式。我尝试了两种方式

  1. 设置系统环境变量:env = local,dev,qa,uat。

  2. 有效资料:春季选项

  3. 但是,这不会自动检测域系统环境变量。我们在系统中手动配置。

    任何人都可以帮忙解决此问题。

1 个答案:

答案 0 :(得分:0)

您可以覆盖默认弹簧配置。假设您正在使用spring-boot并且具有胖可执行jar,您可以使用外部命令行参数覆盖内部配置文件属性,如下所示

java -jar your-executable-fat-jar.jar --spring.config.name=external-prop-file-name --spring.config.location=classpath:/application.yml,file://<external-config-file-parent-dir-path-NOT-EXTERNAL-CONFIG-FILE-PATH>

其中

spring.config.name - external config file name
spring.config.location - Locations to look for configuration files. 

spring.config.location可以命名为你的环境。因此,对于包含env特定配置的每个env,您将拥有单独的目录。

最终命令可能如下所示:

java -jar app.jar --spring.config.name=application.yml --spring.config.location=classpath:/application.yml,file:///app/config/$CURRENT_ENV

假设您当前的env值在CURRENT_ENV中设置,并且所有env特定配置目录都遵循规则/app/config/<env_name>