目录
Spring Boot外部配置源
每篇一句
人是自我编制意义之网的生物,人只有在不快乐的时候才会思考意义,也只有在闲下来的时候才会寻找意义。
外部配置源的作用
Spring Boot相当于对Spring框架进行了封装,Spring Boot会自动配置大量的基础设置Bean(比如DataSource、SessionFactory等)此时就需要提供一些必要的配置信息(如URL、用户名、密码啊),这样Spring才能帮我们去自动配置。
-
配置源包含了配置文件,此外,配置源还包括如下:
-
环境变量
-
系统属性
-
命令行的选项参数
-
JSON配置等
配置源的加载顺序与优先级
各种配置源的加载顺序如下,所有先加载的配置源都有可能被后加载的配置源覆盖,因此可以认为后加载的配置源的优先级更高。
-
加载顺序
-
默认属性(通过SpringApplication.setDefaultProperties()方法指定)。
-
配置类(@Configuration修饰的类)上的、用@PropertySource注解加载的属性文件中的属性值。
-
配置文件(如application.properties文件等)。
-
RandomValuePropertySource,只包含random.*中的属性。
-
操作系统环境变量。
-
Java系统属性(System的getProperties()方法返回的属性)。
-
来自于 java:comp/env 的JNDI属性。
-
ServletContext的初始化参数(在web.xml文件中通过<context-param.../>元素设置的初始化参数)。
-
ServletConfig的初始化参数(在web.xml文件通过<init-param.../>元素设置的初始化参数或通过@Servlet注解设置的初始化参数)。
-
来自SPRING_APPLICATION_JSON的属性(嵌套在环境变量或系统属性中JSON文本)
-
命令行参数。
-
测试用例类上通过@SpringBootTest注解的properties所指定的属性。
-
测试用例类上通过@TestPropertySource注解加载的属性文件中的属性值。
-
如果Spring Boot的devtools工具处于激活状态,用户Home目录中.config/spring-boot/子目录下spring-boot-devtools.properties或spring-boot-devtools.yml文件设置的属性。