聊聊开发中常见几种Spring Cloud Config 的配置文件bootstrap.yml、bootstrap-dev.yml 和 bootstrap-prod.yml
作者:mmseoamin日期:2023-12-05

bootstrap.yml、bootstrap-dev.yml 和 bootstrap-prod.yml 是 Spring Cloud Config 的配置文件,用于获取配置信息并将其应用到应用程序中。它们之间的区别在于它们被加载的顺序和用途,主要用于不同环境下的配置管理。

1. bootstrap.yml

      bootstrap.yml 是 Spring Cloud Config 中用于获取外部配置的特殊配置文件。它的加载优先级比其他配置文件(如 application.yml 或 application.properties)更高。

      bootstrap.yml 主要用于加载一些启动阶段需要用到的配置信息,例如连接到 Spring Cloud Config Server 的配置、加密/解密信息、连接到外部数据库的配置等。因为这些配置信息在应用程序启动的早期阶段就需要用到,所以放在 bootstrap.yml 中确保它们在其他配置之前加载。

      bootstrap.yml 不会被本地配置文件覆盖,它的优先级更高,确保这些关键配置的安全性和准确性。

2. bootstrap-dev.yml

       bootstrap-dev.yml 是 bootstrap.yml 的一个特定的开发环境 profile,用于在开发环境下加载特定的外部配置信息。

      在开发环境中,可能需要与生产环境不同的配置,例如连接到不同的数据库、使用不同的服务地址等。通过使用 `bootstrap-dev.yml` 可以轻松地区分开发环境和其他环境的配置。

      当在开发环境启动应用程序时,Spring Cloud Config 将会加载 `bootstrap.yml` 和 `bootstrap-dev.yml` 的配置,并根据当前激活的 profile(如通过 `spring.profiles.active` 属性指定)加载对应的配置。

3. bootstrap-prod.yml

       bootstrap-prod.yml 是 bootstrap.yml 的一个特定的生产环境 profile,用于在生产环境下加载特定的外部配置信息。

      在生产环境中,可能需要与开发环境或其他环境不同的配置,例如连接到不同的生产数据库、启用更高级别的日志记录等。通过使用 `bootstrap-prod.yml` 可以确保生产环境的配置与其他环境隔离。

      当在生产环境启动应用程序时,Spring Cloud Config 将会加载 `bootstrap.yml` 和 `bootstrap-prod.yml` 的配置,并根据当前激活的 profile(如通过 `spring.profiles.active` 属性指定)加载对应的配置。

4.使用

bootstrap.yml,生产环境下加载特定的外部配置信息(即指定加载哪一个环境的配置信息)

spring:
  profiles:
    active: dev  #指定加载bootstrap-dev.yml的配置信息
   # active: prod  指定加载bootstrap-prod.yml的配置信息
    include: commonweb,dev

bootstrap-dev.yml

server:
  port: 8080
spring:
  application:
    name: mom-part
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yaml
        group: DEFAULT_GROUP
    inetutils:
      preferred-networks: localhost
  # 允许@FeignClient同名
  main:
    allow-bean-definition-overriding: true
logstash:
  server-addr: localhost:5048
log:
  level: INFO

bootstrap-prod.yml

server:
  port: 8080
spring:
  application:
    name: mom-oe
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yaml
        group: DEFAULT_GROUP
        namespace: production
  # 允许@FeignClient同名
  main:
    allow-bean-definition-overriding: true
# 覆盖common-web包下logstash服务地址和日志级别
logstash:
  server-addr: localhost:5048
log:
  level: INFO

总结:

bootstrap.yml 是 Spring Cloud Config 用于获取外部配置的高优先级配置文件,在应用程序启动早期加载,并不会被本地配置覆盖。

bootstrap-dev.yml 是 bootstrap.yml 的一个特定开发环境的 profile,用于在开发环境下加载特定的外部配置信息,通过激活不同的 profile 加载对应的配置。

bootstrap-prod.yml是 bootstrap.yml 的一个特定生产环境的 profile,用于在生产环境下加载特定的外部配置信息,通过激活不同的 profile 加载对应的配置。