SpringCloud bootstrap.yml和application.yml 不同环境下的配置

在 Spring Boot 中有两种上下文,一种是 bootstrap,另外一种是 application。

bootstrap 是系统级的资源配置项,application是用户级的资源配置项。

boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载。

bootstrap 具有更高优先级,它不会被本地配置覆盖。

bootstrap 主要用于负责从外部源加载配置属性并解析。

这两个上下文共用一个环境,它是任何Spring应用程序的外部属性的来源。

比如通过获得github配置仓库的地址、其他连接配置(如密码等),进而通过目标配置文件的文件名获取相应的配置,最后将取得的配置对自身资源进行赋值并提供访问,就需要一个较早的配置。因此,需要将配置服务器属性放在 bootstrap.yml 中,该属性用于加载实际配置数据(通常覆盖application.yml 中的内容)。 

YAML: (发音 /ˈjæməl/ )Yet Another Markup Language

YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、

application.yml 和 bootstrap.yml 都是可以设置 spring.profiles.active 属性来区分不同配置环境。

比如我们设置test、dev环境。

使用不同的文件

1、创建三个文件bootstrap.yml、bootstrap-dev.yml、bootstrap-test.yml。

2、然后把不同的配置分别写到 bootstrap-dev.yml、bootstrap-test.yml里

3、然后在 bootstrap.yml 里设置 spring:profiles:active=test 来指定默认配置环境。

4、上面是必须指定默认的配置环境,如果要发布,我们可以在项目运行时添加一条命令,来指定运行或发布时采用什么配置文件

--spring.cloud.bootstrap.name=bootstrap-dev

只采用一个文件 

bootstrap.yml内容

通过 spring:profiles 和 --- 区分不同环境下的配置

server:
  port: 10001


# 默认的profile为dev,其他环境通过指定启动参数使用不同的profile,如:
# 开发环境:java -jar abc.jar --spring.profiles.active=dev
# 测试环境:java -jar abc.jar --spring.profiles.active=test

spring:
  profiles:
    active: dev


---

spring:
  profiles: dev
  cloud:
    nacos:
      config:
        server-addr: abc.com:80
        file-extension: yaml
        namespace: 9aa27976-1f57-45b9-b9ec-8a5866e376bf
        group: dev


---

spring:
  profiles: test
  cloud:
    nacos:
      config:
        server-addr: 172.10.0.10:8848
        file-extension: yaml
        namespace: 9aa27976-1f57-45b9-b9ec-8a5866e376bf
        group: test

spring:
  profiles:
    active: dev

上面的是配置默认的profile

也可以通过idea配置profile

 

### Spring Cloud 中 `bootstrap.yml` 文件配置及用法 #### 1. 定义与作用 `bootstrap.yml` 是 Spring Cloud 应用程序中的一个重要配置文件,主要用于应用程序启动阶段的早期初始化过程。此文件允许开发者定义一些在应用程序上下文创建之前就需要读取并处理的关键设置[^1]。 #### 2. 主要功能 该文件的主要目的是支持应用的配置加载机制,在某些情况下可以覆盖默认的行为来满足特定需求。例如,当使用 Config Server 或者其他外部化配置中心时,可以通过 `bootstrap.yml` 来指定如何连接到这些服务以及获取相应的配置数据[^2]。 #### 3. 增加依赖项 对于版本为 v2021.0.1 的 Spring Cloud 而言,如果发现 `bootstrap.yml` 文件配置不生效,则可能是因为缺少必要的 Starter 依赖。此时应该添加名为 `spring-cloud-starter-bootstrap` 的 Maven 依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency> ``` 这一步骤确保了框架能够正确识别并解析 `bootstrap.yml` 文件内的各项参数设定[^3]。 #### 4. 使用场景举例 假设有一个微服务架构下的项目想要通过 GitLab 上托管的一个私有仓库作为集中式的配置管理工具。那么可以在 `bootstrap.yml` 中这样写入相关的信息以便于自动拉取最新的环境变量其他全局性的属性值: ```yaml spring: application: name: my-service-name cloud: config: uri: http://gitlab.example.com/config-repo/ label: master profile: dev ``` 上述例子展示了怎样利用 `bootstrap.yml` 实现从远程源动态加载配置的功能,这对于分布式系统的开发非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值