我想基于服务器环境自动加载属性文件,如stage,uat,qa等使用spring 4的编程方式。我尝试了两种方式
设置系统环境变量:env = local,dev,qa,uat。
有效资料:春季选项
但是,这不会自动检测域系统环境变量。我们在系统中手动配置。
任何人都可以帮忙解决此问题。
答案 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>