Spring Cloud Config

Spring Cloud Config

自定义参数

application.yml 文件

1
2
3
app:
name: aa
pwd: 123456

java 文件

1
2
3
4
5
6
7
8
9
10
@Component
public class Test{

@Value("${app.name}")
private String name;

@Value("${app.pwd}")
private String pwd

}

@Value 注解加载属性值的时,可支持两种表达方进行配置

  • PlaceHolder方式,格式为 ${…},大括号内为 PlaceHolder
  • SpEL 表达式,格式为 #{….}, 大括号内为SpEL表达式

参数引用

配置文件中可以通过 PlaceHolder 的方式进行引用。

加载顺序

  1. 命令行中传入的参数
  2. SPRING_APPLICATION_JSON 中的属性,SPRING_APPLICATION_JSON 是以json 格式配置在系统环境中的内容
  3. java:comp/env 中的JNDI属性
  4. Java的系统属性,可以通过System.getProperties()获得的内容。
  5. 操作系统的环境变量
  6. 通过random.* 配置的随机属性。
  7. 位于当前应用jar包之外,针对不同 {profile} 环境的配置文件内容。
  8. 位于当前应用jar包之内,针对不同{profile}环境的配置文件内容。
  9. 位于当前应用jar包之外的application.properties配置内容。
  10. 位于当前应用的jar包之内的application.properties的配置内容。
  11. 在@Configuration 注解修改的类中,通过 @PropertySource 注解定义的属性。
  12. 应用默认属性,使用SpringApplication.setDefauldProperties定义的内容。

优先级按上面的的顺序由高到底,数字越小优先级越高。
在第7项和第9项都是从应用 jar 包之外读取配置文件,所以,实现外部化配置的原理就是从此切入,为其指定外部配置文件的加载位置来取代jar包内的配置内容。

TODO

写一段测试脚本,显示 配置内容的加载顺序,覆盖顺序,以及所有配置信息的内容。