zoukankan      html  css  js  c++  java
  • SpringBoot 的 bootstrap 和 application 配置文件

    SpringBoot 默认支持 properties 和 YAML 两种格式的配置文件,并且有 bootstrap 和 application 两种配置文件


    两者的区别

    • bootstrap 配置文件先于 application 配置文件被加载,会先创建初始化 Bootstrap Context,再创建初始化 Application Context,应用于更早期的配置信息,可以理解为系统配置
    • bootstrap 和 application 共享同一个 Environment,默认情况下,bootstrap 的配置不会被覆盖,而 application 的配置项可以被覆盖(比如被 application-dev 覆盖,或被 java 命令行覆盖)

    应用 bootstrap 的例子

    • 比如从 Spring Cloud Config 和 Consul 获取配置的时候,由于初始化 Application Context 的时候需要知道如何去 Config/Consul 获取配置,所以 Config/Consul 基本信息就不能写到 application.yml 等到 Application Context 初始化时才读取,必须在 bootstrap.yml 里配置,这样 Application Context 初始化时才能知道需要去 Config/Consul 获取配置,并且知道 Config/Consul 的基本信息
    • 比如一些固定的不希望被覆盖的属性,如程序的名字
    • 比如一些加解密的场景

    application 的配置可以有多个,比如 application.yml,application-dev.yml,application-prod.yml

    在 application.yml 可以这样指定

    spring:
      profiles:
        active: dev
    

    这样 SpringBoot 在加载 application.yml 后还会加载 application-dev.yml
    并且如果两个文件有相同的配置项,那么 application.yml 的会被 application-dev.yml 的覆盖


    配置文件可以存在 4 个地方,按优先级从高到低是

    • 项目根目录下的 config 文件夹
    • 项目根目录
    • classpath 下的 config 文件夹
    • classpath

    也可以在 java 命令指定

    java -jar spring-boot-hello-1.0.0-SNAPSHOT.jar --spring.config.location=~/application.yml
    

    还可以在 java 命令中覆盖配置项

    java -jar spring-boot-hello-1.0.0-SNAPSHOT.jar --spring.profiles.active=prod --server.port=8081
    

    这里指定了新的 port 和 profile



  • 相关阅读:
    [BZOJ2179]FFT快速傅立叶
    [UOJ#34]多项式乘法
    [BZOJ4636]蒟蒻的数列
    [BZOJ4632]树的编码
    [BZOJ1070][SCOI2007]修车
    [BZOJ1529][POI2005]ska Piggy banks
    [BZOJ2654]tree
    腾讯应用管理中心,腾讯开放平台应用认领
    Sony/索尼 NW-ZX300A ZX300 无损音乐播放器4.4口
    read progress
  • 原文地址:https://www.cnblogs.com/moonlight-lin/p/14166170.html
Copyright © 2011-2022 走看看