SpringBoot外部化配置

简介: Spring Boot支持外部化配置,使应用能在不同环境中使用相同代码。配置可来自Java属性文件、YAML文件、环境变量和命令行参数。配置加载顺序按优先级从高到低:命令行参数、JNDI属性、Java系统属性、环境变量、`random.*`属性、外部配置文件(含profile)、内部配置文件。配置文件加载先考虑带profile的,再加载不带的。最后是@Configuration注解类的@PropertySource和SpringApplication的默认属性。

Spring Boot允许外部化项目配置,以便您可以在不同的环境中使用相同的应用程序代码。您可以使用各种外部配置源,包括Java属性文件、YAML文件、环境变量和命令行参数。

属性值可以通过使用@Value注释直接注入到bean中,通过Spring的环境抽象进行访问,或者通过@ConfigurationProperties绑定到结构化对象。

SpringBoot从以下位置加载配置,优先级从高到低,高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置

1.命令行参数

java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087  --server.context-path=/abc

所有的配置都可以在命令行上进行指定

多个配置用空格分开。 --配置项1=值 --配置项2=值

2.来自java:comp/env的JNDI属性

3.Java系统属性(System.getProperties())

4.操作系统环境变量

5.RandomValuePropertySource配置的random.*属性值

jar外部配置properties或yaml文件,由外部配置向内部配置进行查找

外部配置文件必须与jar在同一个目录。

同时:

优先加载带profile

6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件

7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件

再来加载不带profile

8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件

9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件

10.@Configuration注解类上的@PropertySource

11.通过SpringApplication.setDefaultProperties指定的默认属性

相关文章
|
7月前
|
Java
Springboot项目启动的三种方式
Springboot项目启动的三种方式
|
8月前
|
Java
09 SpringBoot外部配置加载顺序
09 SpringBoot外部配置加载顺序
53 0
|
1月前
|
Java
SpringBoot内部配置加载顺序
SpringBoot内部配置加载顺序
39 0
|
1月前
|
Java
SpringBoot利用外部配置,来设置jar包运行配置
SpringBoot利用外部配置,来设置jar包运行配置
45 0
|
6月前
|
Java
springboot动态配置
springboot动态配置
68 0
|
11月前
|
Java
springboot自定义外部扩展文件
在springboot启动的时候调用run方法,可以看到run方法里面的内容,其中有一个getRunListeners方法
|
Java 应用服务中间件 Spring
03.SpringBoot自动配置
03.SpringBoot自动配置
|
安全 Java 数据库连接
SpringBoot-基础配置和属性配置详解
SpringBoot-基础配置和属性配置详解
SpringBoot-基础配置和属性配置详解
|
前端开发 Java
SpringBoot和SpringCloud的配置文件的加载(源码级解读)
SpringBoot和SpringCloud的配置文件的加载(源码级解读)
57278 1