在 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

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐