Spring Boot 的特征之外部化配置(Externalized Configuration)

Spring Boot让你外部化配置你的配置,以便你使用同一套代码运行在不同的环境。你能使用多种多样的外部配置资源,包括properties files, YAML files, environment variables, 还有command-line arguments。

属性值能被@Value annotation直接注入到你的beans中,通过Spring’s Environment进入或者,通过@ConfigurationProperties绑定结构化的对象。

Spring Boot使用一个特定的PropertySource属性的设计,允许合乎情理的重写值。属性通过以下顺序重写更早的值:@A

  1. Default properties 具体被SpringApplication.setDefaultProperties设置
  2. @PropertySource在你的@Configuration类上,直到应用程序上下文被刷新有些配置资源是不能被添加到Environment的。因为太晚而不能确保的属性,比如logging.* and spring.main.*,开始刷新之前就被读取了。
  3. 配置数据比如application.properties文件
  4. 仅仅在有random.*的RandomValuePropertySource中
  5. 操作系统环境变量
  6. Java系统变量
  7. 来自java:comp/env的JNDI
  8. ServletContext初始化参数
  9. ServletConfig初始化参数
  10. SPRING_APPLICATION_JSON
  11. 命令行参数
  12. properties attribute on your tests
  13. . @TestPropertySource在你的测试
  14. Devtools global settings properties

配置文件数据按照以下顺序应用:

  1. 在jar包里面的application.properties and YAML 文件
  2. 在jar包里面的application- {profile}.properties and YAML 文件
  3. 在jar包外面的application.properties and YAML 文件
  4. 在jar包外面的application- {profile}.properties and YAML 文件

一般建议你选择一个使用。如果既有.properties又有 .yml在同一个位置,.properties优先。

Accessing Command Line Properties访问命令行参数

默认SpringApplication解析任何命令行参数,参数以--开头,比如--server.port=9000,把一个属性添加到Spring Environment。像之前提到的命令行参数总是优先替代属性.

如果你不想让命令行属性添加到Environment,你可以禁用它们通过使用SpringApplication.setAddCommandLineProperties(false).

JSON Application Properties

环境变量和系统属性,经常有一些名字禁止使用或者被限制。Spring Boot允许你把一块属性加入一个单独的JSON结构文件。

当你的应用启动,任何spring.application.json或者SPRING_APPLICATION_JSON将会被解析和添加到Environment。

例如SPRING_APPLICATION_JSON属性文件,能被应用到

这个执行例子,以这个结束my.name=test 的值在Spring的 Environment.

$ SPRING_APPLICATION_JSON='{"my":{"name":"test"}}' java -jar myapp.jar

同样也提供属性作为一个系统属性。

$ java -Dspring.application.json='{"my":{"name":"test"}}' -jar myapp.jar

命令行参数 

 java -jar myapp.jar --spring.application.json='{"my":{"name":"test"}}
如果你部署一个经典的应用服务器,你也可以使用JNDI变量命名为 java:comp/env/spring.application.json。

External Application Properties外部应用属性

Spring Boot应用启动将会自动的发现和加载在下列位置的application.properties和 application.yaml文件:

1在classpath

a.classpath 的根路径

b.classpath的/config包中

2.在当前文件夹

a.当前目录

b.当前目录的子目录里的/config目录里

c.  /config子目录的 直接子目录。

这个列表顺序优先被加载。简单说覆盖更早加载顺序的配置文件  。

Profile Specific Files

Property Placeholders

Encrypting Properties         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值