Springboot允许您将配置外部化,以便在不同的环境中使用相同的应用程序代码。可以使用properties文件、yaml文件、环境变量和命令行参数来外部化配置。属性值可以通过使用@Value注释直接注入bean,通过Spring的环境抽象访问,或者通过@ConfigurationProperties绑定到结构化对象。
Springboo使用了一个非常特殊的 PropertySource 顺序,该顺序设计为允许合理地覆盖值。属性按以下顺序考虑:
1、开发工具主目录上的全局设置属性(~/.spring-boot-devtools.properties,当开发工具处于活动状态时)
2、测试中的@TestPropertySource注解
3、测试的属性。在@SpringBootTest和测试注释上提供,用于测试应用程序的特定部分。
4、命令行参数
5、SPRING_APPLICATION_JSON的属性(嵌入在环境变量或系统属性中的内联json)。
6、ServletConfig 初始化参数
7、ServletContext 初始化参数
8、java:comp/env的JNDI参数
9、Java系统属性(System.getProperties()).
10、操作系统环境变量.
11、RandomValuePropertySource,其属性仅为random.*。
12、在打包的JAR之外配置特定的应用程序属性(application-{profile}.properties和yaml变量)。
13、在打包的JAR之中配置特定的应用程序属性(application-{profile}.properties和yaml变量)
14、打包JAR之外的应用程序属性(application.propert