《Spring Cloud微服务架构进阶》——3.3.2 外部化配置
3.3.2 外部化配置
Spring Boot所提供的配置优先级顺序比较复杂。按照优先级从高到低的顺序,具体的列表如下所示:
1)命令行参数。SpringApplication类默认会把命令行参数转化成应用中可以使用的配置参数。
2)通过System#getProperties方法获取的Java系统参数。
3)操作系统环境变量。使用Docker启动时,经常会设置系统变量。
4)从java:comp/env得到的JNDI属性。
5)通过RandomValuePropertySource生成的random.*属性。
6)应用jar文件之外的属性文件,如通过spring.config.location参数指定的属性文件。
7)应用jar文件内部的属性文件,这是常用的方式。
8)在应用配置Java类(包含@Configuration注解的Java类)中通过@PropertySource注解声明的属性文件。
9)通过SpringApplication#setDefaultProperties方法声明的默认属性。
有些系统会涉及一些数据库或其他第三方账户等信息,出于安全考虑,这些信息并不会提前配置在项目中。对于这种情况,可以在运行程序的时候通过参数指定一个外部配置文件的方式来解决。
以demo.jar为例,方法如下:
java -jar demo.jar --spring.config.location=/opt/config/application.properties
这里指定的外部文件名无固定要求,如果需要通过bash脚本来加载不同环境的外部配置文件,文件的命名可以参考application-{env}.properties。
- 点赞
- 收藏
- 关注作者
评论(0)