springboot bootstrap.yml和application.yml

本文解析了SpringBoot中bootstrap.yml, application.yml和application.properties的加载顺序与覆盖规则,通过实例演示了不同配置文件如何影响应用端口设置。

springboot bootstrap.yml和application.yml

          

bootstrap.yml在application.yml之前加载,一般在spring cloud使用配置中心时使用;

bootstrap.yml同名属性会被application.yml覆盖;

application.yml在application.properties之前加载,同名属性会被application.properties覆盖

              

                  

***************

示例

             

导入jar包,使bootstrap.yml得配置生效

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-context</artifactId>
            <version>2.2.0.RELEASE</version>
        </dependency>

                 

***************

bootstrap.yml

                

server:
  port: 8081

                  

启动应用,控制台输出

2019-12-20 11:03:50.672  INFO 20380 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-12-20 11:03:50.676  INFO 20380 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1370 ms
2019-12-20 11:03:50.936  INFO 20380 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-12-20 11:03:51.289  INFO 20380 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8081 (http) with context path ''
2019-12-20 11:03:51.296  INFO 20380 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 3.264 seconds (JVM running for 6.268)

应用监听端口为8081,bootstrap.yml生效

               

                   

***************

添加application.yml

               

server:
  port: 8082

                 

启动应用,控制台输出

2019-12-20 11:07:33.062  INFO 22148 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-12-20 11:07:33.062  INFO 22148 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 739 ms
2019-12-20 11:07:33.179  INFO 22148 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-12-20 11:07:33.374  INFO 22148 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8082 (http) with context path ''
2019-12-20 11:07:33.377  INFO 22148 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 2.011 seconds (JVM running for 3.696)

应用监听端口为8082,application.yml覆盖bootstrap.yml的端口配置

                

                  

***************

添加application.properties

               

server.port=8083

                   

启动应用,控制台输出

2019-12-20 11:11:04.004  INFO 608 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-12-20 11:11:04.004  INFO 608 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 844 ms
2019-12-20 11:11:04.149  INFO 608 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-12-20 11:11:04.316  INFO 608 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8083 (http) with context path ''
2019-12-20 11:11:04.320  INFO 608 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 2.018 seconds (JVM running for 3.692)

应用监听端口为8083,application.properties覆盖前面的配置信息

            

              

<think>我们正在回答用户的问题:如何在Spring Boot项目中创建bootstrap.ymlapplication.yml文件 根据之前的回答,我们已经知道这两个文件的作用区别。现在用户想知道如何具体创建它们。 步骤: 1. 确定项目结构:Spring Boot项目通常使用Maven或Gradle构建,配置文件放在src/main/resources目录下。 2. 创建文件:在src/main/resources目录下创建bootstrap.ymlapplication.yml文件。 3. 配置内容:根据需求填写配置内容,注意YAML语法(使用缩进,键值对等)。 4. 注意事项:bootstrap.yml需要Spring Cloud依赖,如果只是普通Spring Boot项目,可能不需要bootstrap.yml。 下面详细说明每一步:</think>### 如何在 Spring Boot 项目中创建 `bootstrap.yml` `application.yml` 以下是创建配置这两个核心配置文件的详细步骤,结合 Spring Boot 的加载机制最佳实践: #### 1. **创建文件位置** - **路径要求**:所有配置文件必须放在项目的资源目录下: ```bash src/main/resources/ ``` - **创建方法**: - 在 IDE 中右键点击 `resources` 目录 → 新建文件 → 输入完整文件名 - 或手动创建文件: ```bash # 进入项目目录 cd your-project/src/main/resources # 创建文件 touch bootstrap.yml touch application.yml ``` #### 2. **文件内容配置** - **`bootstrap.yml`(优先加载)** 用于**启动初始化配置**(如配置中心连接): ```yaml spring: application: name: order-service # 应用名称(配置中心标识) cloud: config: uri: http://config-server:8888 # 配置中心地址 fail-fast: true # 启动时配置中心不可用则报错 ``` > ⚠️ 注意:需添加 Spring Cloud 依赖才能生效(如 Maven 的 `spring-cloud-starter-config`)[^2]。 - **`application.yml`(主配置)** 用于**运行时配置**(如端口、数据库): ```yaml server: port: 8080 # 服务端口 spring: datasource: url: jdbc:mysql://localhost:3306/orders username: admin password: securePass123! logging: level: root: INFO # 日志级别 ``` #### 3. **配置加载顺序与优先级** | 文件 | 加载阶段 | 优先级 | 典型用途 | |------------------|----------------|--------|-----------------------------------| | `bootstrap.yml` | **最早加载** | 更高 | 配置中心连接、加密密钥初始化 | | `application.yml`| 应用上下文初始化 | 较低 | 端口、数据库、自定义业务配置 | - **关键规则**: - `bootstrap.yml` 的属性优先加载,但 `application.yml` 可覆盖**非初始化属性**(如 `server.port`)[^1][^2] - 若同时存在 `application.properties`,YAML 文件优先级更高 #### 4. **环境差异化配置** 通过 `spring.profiles.active` 指定环境: ```yaml # application.yml spring: profiles: active: dev # 激活dev环境配置 ``` 创建环境专属文件(如 `application-dev.yml`),其配置会覆盖主配置[^2]。 #### 5. **验证配置生效** - 启动时查看日志: ```bash 2023-08-01 INFO o.s.c.b.BootstrapApplicationListener - Using bootstrap properties [...] 2023-08-01 INFO o.s.b.w.e.t.TomcatWebServer - Tomcat started on port(s): 8080 ``` - 测试配置中心连接:若 `bootstrap.yml` 中配置了 Config Server,启动时会优先拉取远程配置 #### 6. **常见问题解决** - **问题**:`bootstrap.yml` 未生效 **解决**:检查是否添加 Spring Cloud 依赖[^2]: ```xml <!-- Maven 示例 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> ``` - **问题**:YAML 语法错误 **解决**:使用 [YAML 校验工具](https://yamlvalidator.com/) 检查缩进(必须用空格,不能用 Tab) > **最佳实践**: > - 敏感信息(如数据库密码)应通过 `bootstrap.yml` 从配置中心获取 > - 本地开发时可用 `application-dev.yml` 覆盖生产配置 > - 多环境部署时用命令行参数指定配置:`java -jar app.jar --spring.profiles.active=prod`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值