Nacos进阶二之bootstrap.yml配置Nacos

bootstrap.yml配置文件

Spring Cloud应用程序通过创建“ bootstrap ”上下文来运行,该上下文是主应用程序Application的父上下文。它负责从外部源加载配置属性,并负责解密本地外部配置文件中的属性。这两个上下文共享一个Environment?,它是任何Spring应用程序的外部属性的来源。默认情况下,引导程序属性(不是?bootstrap.properties?,而是引导程序阶段加载的属性)具有较高的优先级,因此它们不能被本地配置覆盖。

引导上下文使用与主应用程序上下文不同的约定来定位外部配置。可以使用?bootstrap.yml?来代替?application.yml?(或?.properties?),而将引导程序和外部环境的外部配置很好地分开。以下清单显示了一个示例:

bootstrap.yml

spring:
  application:
    name: order_service
  cloud:
    config:
      uri: ${SPRING_CONFIG_URI:http://localhost:8888}

如果您的应用程序需要来自服务器的任何特定于应用程序的配置,则最好设置?spring.application.name?(在?bootstrap.yml?或?application.yml?中)。为了将属性?spring.application.name?用作应用程序的上下文ID,必须在?bootstrap.[properties | yml]?中进行设置。

如果要检索特定的配置文件配置,还应该在?bootstrap.[properties | yml]?中设置?spring.profiles.active?。您可以通过设置?
spring.cloud.bootstrap.enabled=false?来完全禁用引导过程(例如,在系统属性中)。

SpringCloud 的项目

在 SpringCloud 的项目中,配置文件 bootstrap.yml主要是用于应用程序上下文的引导阶段,该配置文件的加载是在 application.yml 之前。

在SpringCloud中有两种上下文,一种是bootstrap,另外一种是application, bootstrap是应用程序的父上下文。

bootstrap.yml配置文件的使用场景:

1、使用配置中心时,这时需要在bootstrap配置文件中添加连接到配置中心的信息,来加载外部配置中心的配置信息

2、一些固定的不能被覆盖的属性

3、一些加密/解密的信息

项目中 bootstrap.yml 示例

spring:
  application:
    name: order-service

##下面是环境区分,主要不同环境不同文件获取
---
#测试环境
spring:
  profiles: beta
  #nacos
  cloud:
    nacos:
      discovery:
        server-addr: 172.0.0.1:8848
        namespace: 21406c22-abef-4472-953e-tyea2aeb167a
        username: nacos
        password: nacos
      config:
        server-addr: 172.0.0.1:8848
        username: nacos
        password: nacos
        namespace: 21406c22-abef-4472-953e-tyea2aeb167a
        group: DEFAULT_GROUP
        shared-configs:
          - data-id: common-kafka.yaml
            group: DEFAULT_GROUP
            refresh: true

          - data-id: common-xxl-job.yaml
            group: DEFAULT_GROUP
            refresh: true

          - data-id: common-redis-order.yaml
            group: DEFAULT_GROUP
            refresh: true

          - data-id: common-mysql-order.yaml
            group: DEFAULT_GROUP
            refresh: true
       
        extension-configs:
          - data-id: order-config.yaml
            group: DEFAULT_GROUP
            refresh: true
---
#本地环境
spring:
  profiles: local
  #nacos
  cloud:
    nacos:
      discovery:
        server-addr: 172.0.0.1:8848
        namespace: 21406c22-abef-4472-953e-tyea2aeb167b
        username: nacos
        password: nacos
      config:
        server-addr: 172.0.0.1:8848
        username: nacos
        password: nacos
        namespace: 21406c22-abef-4472-953e-tyea2aeb167b
        group: DEFAULT_GROUP
        shared-configs:
          - data-id: common-kafka.yaml
            group: DEFAULT_GROUP
            refresh: true

          - data-id: common-xxl-job.yaml
            group: DEFAULT_GROUP
            refresh: true

          - data-id: common-redis-order.yaml
            group: DEFAULT_GROUP
            refresh: true

          - data-id: common-mysql-order.yaml
            group: DEFAULT_GROUP
            refresh: true
       
        extension-configs:
          - data-id: order-config.yaml
            group: DEFAULT_GROUP
            refresh: true
---
#正式环境
spring:
  profiles: prod
  #nacos
  cloud:
    nacos:
      discovery:
        server-addr: 172.0.0.1:8848
        namespace: 21406c22-abef-4472-953e-tyea2aeb167c
        username: nacos
        password: nacos
      config:
        server-addr: 172.0.0.1:8848
        username: nacos
        password: nacos
        namespace: 21406c22-abef-4472-953e-tyea2aeb167c
        group: DEFAULT_GROUP
        shared-configs:
          - data-id: common-kafka.yaml
            group: DEFAULT_GROUP
            refresh: true

          - data-id: common-xxl-job.yaml
            group: DEFAULT_GROUP
            refresh: true

          - data-id: common-redis-order.yaml
            group: DEFAULT_GROUP
            refresh: true

          - data-id: common-mysql-order.yaml
            group: DEFAULT_GROUP
            refresh: true
       
        extension-configs:
          - data-id: order-config.yaml
            group: DEFAULT_GROUP
            refresh: true