SpringBoot 的 bootstrap 和 application 配置文件
SpringBoot 默认支持 properties 和 YAML 两种格式的配置文件,并且有 bootstrap 和 application 两种配置文件
两者的区别
- bootstrap 配置文件先于 application 配置文件被加载,会先创建初始化 Bootstrap Context,再创建初始化 Application Context,应用于更早期的配置信息,可以理解为系统配置
- bootstrap 和 application 共享同一个 Environment,默认情况下,bootstrap 的配置不会被覆盖,而 application 的配置项可以被覆盖(比如被 application-dev 覆盖,或被 java 命令行覆盖)
应用 bootstrap 的例子
- 比如从 Spring Cloud Config 和 Consul 获取配置的时候,由于初始化 Application Context 的时候需要知道如何去 Config/Consul 获取配置,所以 Config/Consul 基本信息就不能写到 application.yml 等到 Application Context 初始化时才读取,必须在 bootstrap.yml 里配置,这样 Application Context 初始化时才能知道需要去 Config/Consul 获取配置,并且知道 Config/Consul 的基本信息
- 比如一些固定的不希望被覆盖的属性,如程序的名字
- 比如一些加解密的场景
application 的配置可以有多个,比如 application.yml,application-dev.yml,application-prod.yml
在 application.yml 可以这样指定
spring:
profiles:
active: dev
这样 SpringBoot 在加载 application.yml 后还会加载 application-dev.yml
并且如果两个文件有相同的配置项,那么 application.yml 的会被 application-dev.yml 的覆盖
配置文件可以存在 4 个地方,按优先级从高到低是
- 项目根目录下的 config 文件夹
- 项目根目录
- classpath 下的 config 文件夹
- classpath
也可以在 java 命令指定
java -jar spring-boot-hello-1.0.0-SNAPSHOT.jar --spring.config.location=~/application.yml
还可以在 java 命令中覆盖配置项
java -jar spring-boot-hello-1.0.0-SNAPSHOT.jar --spring.profiles.active=prod --server.port=8081
这里指定了新的 port 和 profile
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界