1.1.4、SpringBoot配置
一、配置文件分类
SpringBoot是基于约定的,所以很多配置有默认值,如果想要替换成自己的,可以通过
application.properties或application.yml(application.yaml)进行配置;配置文件的基础样式
application.properties
server.port=80application.yml(yaml)
server: port: 80注意:值与冒号(:)之间有空格
properties、yml以及yaml的加载优先级
如果以上三种配置文件都存在,而且都存在相同的配置,那么有效的配置是有优先级的,高优先级的覆盖低优先级的配置
properties > iml > yaml
二、yaml基础语法
yaml全名YAML Ain't Markup Language。是一种直观的能够被电脑识别的数据数据序列化格式,并且容易被人阅读,容易和脚本语言交互的,可以被支持yaml库的不同编程语言程序导入的;yml文件是以数据为核心的,比传统的xml方式更加简洁。后缀名可以是yml,也可以是yaml;
对应配置文件对比:
properties
server.port=80 server.address=127.0.0.1xml
<server> <port>80</port> <address>127.0.0.1</address> </server>yml
server: port: 80 address: 127.0.0.1
yaml基本语法
大小写敏感
数据值前面必须有空格,作为分割符
使用缩进表示层级关系
缩进时候不允许使用Tab键,只允许使用空格(不同操作系统Tab对应的空格数可能不同,从而导致层级混乱,如果设置相同,可以使用)
缩进的空格数目不重要,只要能保证相同层级的元素左侧对齐即可
表示注释,从这个字符开始,一只到这一行的最后,都会被解析器忽略
yaml数据格式
对象(map):键值对的集合
默认的方式都是键值对
数组:一组按次序排列的值
address: - beijing - shanghai # 行内写法 address: [beijing,shanghai]纯量写法:
msg1: 'hello \n word' # 但引忽略转义字符 msg2: "hello \n word" # 双引识别转移字符
参数引用
使用${key}来进行引用:
name: test system: name: ${name}
三、读取配置文件内容
读取配置文件内容的方式:(假定配置文件中的自定义配置key为name)
@Value-注解
备注:直接在代码中使用注解获取
Environment-对象
@ConfigurationProperties-注解
定义类,类中的参数名要与配置文件的内容相同
注意:IDEA中,文件上面可能会出现报错,不影响!
解决办法:在pom中添加部分依赖坐标即可,可以点击报错查看坐标具体内容,作用:先定义类,后写yml有提示
代码注入即可
四、profile(多环境切换)
因为开发,测试以及生产的对应环境相关配置不同,不可能每次打包时候都要修改,profile可以动态配置对应的环境
配置方式:
多profile文件的方式
定义多个配置文件:application.properties、application-dev.properties、application-test.properties、application-pro.properties
分别代表不同的环境:主环境、开发环境、测试环境、生产环境
激活对应环境的方式:
备注:yml也可以使用这种方式去定义
yml多文档方式
在yml中使用特定的符号去将代码分成多部分:
激活的方式:
配置文件:上面的内容包含了配置文件的激活环境方式
虚拟机参数:
启动过程中,添加虚拟机参数(VM options):-Dspring.profiles.active=dev
dev就是启动石斛定义的环境参数
命令行参数:
启动过程中,使用命令修改启动参数(Program arguments):--spring.profiles.active=dev
启动命令可以成为:java -jar xxx.jar --spring.profiles.active=dev
五、内部配置加载顺序
Spring启动时候会从以下位置读取配置文件:
file:./config/ 当前项目下的/config目录下
file:./ 当前项目的根目录
classpath:/config/ classpath的/config目录
classpath:/ classpath的根目录
加载顺序为上面文件的展示顺序,高优先级配置的属性会生效
六、外部配置加载顺序
可以查看官方文档:一共17个地方可以配置,官方介绍的顺序就是优先级高到低的顺序
简单介绍几个:
命令行配置:类似profile的命令行启动方式:java -jar xxx.jar --server.port=90 --server......很多配置
指定外部配置文件:命令行配置中,使用命令指定外部配置文件地址即可:java -jar xxx.jar --spring.config.location=地址
定义配置文件与jar包同目录,启动jar包即可(放在同目录下的config目录下依旧可以)
外部配置与内部配置形成互补配置,可以解决某些问题
Last updated
Was this helpful?