下面给出完整的“springboot配置文件的加载顺序解析”攻略。
配置文件加载规则
在Spring Boot应用启动时,会加载一组规则,来确定加载哪些属性、哪些配置文件。按照如下的加载规则:
-
所有指定的配置文件会按照以下顺序读取:
-
file:./config/
目录下的全部配置文件 file:./
目录下的全部配置文件classpath:/config/
目录下的全部配置文件classpath:/
目录下的全部配置文件-
配置路径可以通过指定
spring.config.location
和spring.config.name
系统属性来设置 -
配置文件会按照以下优先级读取,优先级由高到低:
-
项目根目录下的
bootstrap.yml
或bootstrap.properties
文件 - 项目根目录下的
application.yml
或application.properties
文件 - 在优先级低的文件中,根据
spring.profiles.active
属性来读取指定环境的配置文件
示例说明
为了进一步说明配置文件加载顺序,我们给出以下两个示例:
示例1
假设现在我们有application.yml
的配置文件,内容如下:
server:
port: 9090
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password:12345
运行该应用时,会自动读取这个文件并加载文件中的配置项。如果我们在项目根目录下设置了一个application--dev.yml
配置文件,内容如下:
server:
port: 9091
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: dev_user
password:dev_password
如果在运行时指定了dev
环境:--spring.profiles.active=dev
,则会优先读取application--dev.yml
中的配置,即端口号会变成9091
,数据库用户名和密码会变成dev_user
和dev_password
。
示例2
假设我们在项目根目录下再设置了一个bootstrap.properties
文件,内容如下:
spring.application.name=test-app
spring.cloud.config.uri=http://localhost:8888
再假设我们在http://localhost:8888
上运行了一个config server,它能够提供给我们应用程序的配置文件。例如,它提供了一个test-app--dev.yml
配置文件,内容如下:
server:
port: 9092
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: dev_user
password:dev_password
启动应用时,会先加载bootstrap.properties
文件,并读取其中的spring.cloud.config.uri
属性,然后通过这个uri访问配置服务器,获取最终的配置文件。在这个例子中,即会从配置服务器中获取test-app--dev.yml
,并读取该文件中的配置项。最终配置将是:
server:
port: 9092
spring:
application:
name: test-app
datasource:
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: dev_user
password:dev_password
以上就是Spring Boot配置文件加载顺序的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot配置文件的加载顺序解析 - Python技术站