SpringBoot-统一参数配置
SpringBoot-统一参数配置
SpringBoot工程下,进行统一的配置管理,你想设置的任何参数(端口号、项目根路径、数据库连接信息等等)都集中到一个固定位置和命名的配置文件(application.properties或application.yml)中!
配置文件应该放置在Spring Boot工程的src/main/resources目录下。这是因为src/main/resources目录是Spring Boot默认的类路径(classpath),配置文件会被自动加载并可供应用程序访问
使用SpringBoot提供的key
Spring提供一些固定的Key :: Spring Boot
例如:server.port=8080 启动端口号
1 | |
自定义key
我们也可以在配置文件中写一些自定义的key,用@value注解获取key的值
1 | |
1 | |
Yaml
application配置文件是SpringBoot为所有的配置提供参数的位置,所以必须保证key不重复
为此,SpringBoot采取了多层命名的方式
然而,properties配置文件写多层命名会特别麻烦,而yml(yaml)格式就很适合写多层命名
1 | |
1 | |
yaml格式介绍
YAML 和 YML 是同一个文件格式的不同文件扩展名
YAML(YAML Ain’t Markup Language)是一种基于层次结构的数据序列化格式,旨在提供一种易读、人类友好的数据表示方式。
与.properties文件相比,YAML格式有以下优势:
层次结构
自我描述性
注释支持
多行文本
类型支持
更好的可读性
yaml语法说明
数据结构用树形结构呈现,通过缩进来表示层级,
如果key有多个value(集合)通过减号 ” - ” 来表示
键值结构里面的key/value对用冒号 ” : ” 来分隔,如果存在value,需要加空格
YAML配置文件的扩展名是yaml 或 yml
配置文件-读取数据
@Value读取数据的方式也是有很多缺点的:
- key必须写全
- 只能读取单个值,比如单key多value的集合无法读取
@ConfigurationProperties
为了解决这个问题,SpringBoot提供了@ConfigurationProperties注解
通过prefix属性配置文件中的前缀,分别给属性赋值,这样做有两个好处:
- 方便
- 可以给集合赋值
1 | |
1 | |
动态配置文件
在Spring Boot中,可以使用多环境配置来根据不同的运行环境(如开发、测试、生产)加载不同的配置
SpringBoot支持多环境配置让应用程序在不同的环境中使用不同的配置参数
以下是实现Spring Boot多环境配置的常见方法:
属性文件分离
YAML配置文件
命令行参数(动态)
application-dev.yml(开发)
1 | |
application-test.yml(测试)
1 | |
application-prod.yml(生产)
1 | |
1 | |
优先级问题
当application-dev.yml 和 application.yml具有同样配置时,以外部文件(application-dev)为准
多环境配置
因为统一参数配置,application.yml会有特别多的key,把这些key归类提取不同的文件
再通过application.yml统一管理,同时激活多个配置文件
1 | |