SpringBoot 配置

SpringBoot 配置

配置文件分类

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,

就可以使用 application.properties或者application.yml(application.yaml)进行配置。

  • properties:
server.port=8080
  • yml:
server: 
	port: 8080

小结

  • SpringBoot提供了2种配置文件类型:properteis和yml/yaml

  • 默认配置文件名称:application

  • 在同一级目录下优先级为:properties > yml > yaml

YAML

YAML全称是 YAML Ain't Markup Language 。

YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅 读,

容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,

比如: C/C++, Ruby, Python, Java, Perl, C#, PHP 等。

YML文件是以数据为核心的,比传统的xml方式更加简洁。

YAML文件的扩展名可以使用.yml或者.yaml。

YAML 配置

properties

server.port=8082
server.address=127.0.0.1

yml:

server:
  port: 8081
  address: 127.0.0.1

xml:

<server>
	<port>8080</port>
	<address>127.0.0.1</address>
</server>

简洁,以数据为核心

YAML:基本语法

  • 大小写敏感

  • 数据值前边必须有空格,作为分隔符

  • 使用缩进表示层级关系

  • 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混乱)。

  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

  • # 表示注释,从这个字符一直到行尾,都会被解析器忽略。

server:
  port: 8081
  address: 127.0.0.1

name: xiang

YAML:数据格式

  • 对象(map):键值对的集合。
server:
  port: 8082

name: xiang
name2: xiang

#对象
person:
  name2: ${name}
  name: xiang
  age: 20
  gender: 男
  address:
    - beijing
    - shanghai

#对象行内写法
person2: { name: xiang,age: 21 }
  • 数组:一组按次序排列的值
#数组
address:
  - beijing
  - shanghai

#数组 行内写法
address2: [ beijing,shanghai ]
  • 纯量(常量):单个的、不可再分的值
#纯量、常量
msg1: 'hello 
 world'
msg2: "hello 
 world"
  • yml 多文档 格式
# yml 多文档 格式  --- 进行分隔

---
server:
  port: 8081
spring:
  profiles: dev
---

server:
  port: 8082
spring:
    profiles: test
---

server:
  port: 8083
spring:
    profiles: pro
---

#激活 环境
spring:
  profiles:
    active: test

YAML:参数引用

name: xiang
name2: xiang

#对象
person:
  name2: ${name} # 引用上边定义的name值
  name: xiang

YAML:小结

  1. 配置文件类型

    • properties:和以前一样
    • yml/yaml:注意空格
  2. yaml:简洁,以数据为核心

    • 基本语法

      • 大小写敏感

      • 数据值前边必须有空格,作为分隔符

      • 使用空格缩进表示层级关系,相同缩进表示同一级

    • 数据格式

      • 对象

      • 数组: 使用 “- ”表示数组每个元素

      • 纯量(常量)

    • 参数引用

      • ${key}

读取配置内容

  • @Value

  • Environment

  • @ConfigurationProperties

profile

我们在开发Spring Boot应用时,通常同一套程序会被安装到不同环境,

比如:开发、测试、生产等。

其中数据库地址、服务 器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。

profile功能就是来进行动态配置切换的。

profile配置方式

  • 多profile文件方式

  • yml多文档方式

profile激活方式

  • 配置文件

  • 虚拟机参数

  • 命令行参数

Profile-小结

profile是用来完成不同环境下,配置动态切换功能的。

profile配置方式

  • 多profile文件方式:提供多个配置文件,每个代表一种环境
    • application-dev.properties/yml 开发环境
    • application-test.properties/yml 测试环境
    • application-pro.properties/yml 生产环境
  • yml多文档方式:
    • 在yml中使用 --- 分隔不同配置

profile激活方式

  • 配置文件: 再配置文件中配置:spring.profiles.active=dev
  • 虚拟机参数:在VM options 指定:-Dspring.profiles.active=dev
  • 命令行参数:java –jar xxx.jar --spring.profiles.active=dev

内部配置加载顺序

Springboot程序启动时,会从以下位置加载配置文件:

  1. file:./config/:当前项目下的/config目录下

  2. file:./ :当前项目的根目录

  3. classpath:/config/:classpath的/config目录

  4. classpath:/ :classpath的根目录

加载顺序为上文的排列顺序,高优先级配置的属性会生效

外部配置加载顺序

网址

https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/htmlsingle/#boot-features-extermal-config


原文地址:https://www.cnblogs.com/d534/p/15336114.html