翻找springBoot文档总结而来:

SpringBoot默认支持properties和YAML两种格式的配置文件。

前者格式简单,但是只支持键值对。如果需要表达列表,最好使用YAML格式。

SpringBoot支持自动加载约定名称的配置文件,例如application.yml。如果是自定义名称的配置文件,就要另找方法了。可惜的是,不像前者有@PropertySource这样方便的加载方式,后者的加载必须借助编码逻辑来实现。

读取顺序

如果在不同的目录中存在多个配置文件,它的读取顺序是:

1、application.properties(项目根目录下)

2、application.yml

3、config/application.properties(项目根目录中config目录下)

4、config/application.yml

5、resources/application.properties(项目的resources目录下)

6、resources/application.yml

7、resources/config/application.properties(项目resources目录中config目录下)

8、resources/config/application.yml

9、resources/config/mysql/application.properties(configz子目录下)

注:

1、如果同一个目录下,有application.yml也有application.properties,默认先读取application.properties。

2、如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取到的。

在springBoot3版本中看到,您添加的每个spring.config.location项将引用单个文件或目录。位置按照定义的顺序处理,后面的位置可以覆盖前面位置的值。

3、创建SpringBoot项目时,一般的配置文件放置在“项目的resources目录下”

注意:

  1. 如果您不喜欢application作为配置文件名,您可以通过指定spring.config.name环境属性来切换到另一个文件名。例如,myproject.properties 和myproject.yaml。

java -jar myproject.jar --spring.config.name=myproject

  1. 您还可以通过使用spring.config.location环境属性来引用显式位置

java -jar myproject.jar
--spring.config.location=optional:classpath:/default.properties,optional:classpath:/override.properties

bootstrap.yml(bootstrap.properties)与application.yml(application.properties)执行顺序

bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等

application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

bootstrap.yml 先于 application.yml 加载

典型的应用场景如下:

当使用 Spring Cloud Config Server 的时候,你应该在 bootstrap.yml 里面指定 spring.application.name和 spring.cloud.config.server.git.uri

和一些加密/解密的信息

技术上,bootstrap.yml 是被一个父级的 Spring ApplicationContext 加载的。这个父级的 Spring ApplicationContext是先加载的,在加载application.yml 的 ApplicationContext之前。

为何需要把 config server 的信息放在 bootstrap.yml 里?

当使用 Spring Cloud 的时候,配置信息一般是从 config server 加载的,为了取得配置信息(比如密码等),你需要一些提早的或引导配置。

因此,把 config server 信息放在 bootstrap.yml,用来加载真正需要的配置信息。

SpringBoot配置文件配置文件顺序

SpringBoot配置文件默认可以放到以下目录中,可以自动读取到:

  • 项目根目录下

  • 项目根目录中config目录下

  • 项目的resources目录下

  • 项目resources目录中config目录下

Yaml(yml)文件格式:

  • 大小写有区别

  • 数据前必须有空格(空格数目无所谓)作为分隔符,否则不识别该数据。

  • 缩进的空格数目不重要,但是相同层级的元素要左对齐。

  • 注释的话快捷键也是ctrl+/,是#+空格。

  • 参数引用的话用${}包裹起来即可。

对象(map):键值对的集合

person:
    name: zhangsan

# 行内写法

person: {name: zhangsan}
# Spring
spring:
  profiles:
    # 环境配置
    active: dev
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: ${NACOS_ADDRESS:127.0.0.1:8848}
        namespace: ${NACOS_NAMESPACE:SAM0}
      config:
        # 配置中心地址
        server-addr: ${NACOS_ADDRESS:127.0.0.1:8848}
        namespace: ${NACOS_NAMESPACE:SAM0}
        # 配置文件格式
        file-extension: yml
        shared-configs[1]:
          data-id:  application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

数组

address:
    - beijing
    - shanghai

# 行内写法

address: [beijing,shanghai]

纯量:单个的、不可再分的值。一般都是字符串

msg1: 'hello \n world' # 单引忽略转义字符
msg2: "hello \n world" # 双引识别转义字符

多profile文件方式

  • application.properties/yml 默认

  • application-dev.properties/yml 开发环境

  • application-test.properties/yml 测试环境

  • application-pro.properties/yml 生产环境

激活方式:

配置文件

在配置文件中配置:spring.profiles.active=dev

虞拟机参数

在VM options指定:-Dspring.profiles.active=dev

命令行参数

java-jar xxx.jar --spring.profiles.active=dev

IDE中在maven窗口的第一个Profiler中直接勾选中相应环境

文章作者: 刘同学
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 刘同学的小站
后端 Java
喜欢就支持一下吧