SpringBoot基础配置


配置文件分类

SpringBoot 除了支持 properties 格式的配置文件,还支持另外两种格式的配置文件。分别如下:

  • properties 格式
  • yml 格式
  • yaml 格式

这三种不同文件格式以配置服务器端口为例,如下:

  • application.properties(properties格式)
server.port=80
  • application.yml(yml格式)
server:
  port: 81
  • application.yaml(yaml格式)
server:
  port: 82

仔细看会发现 yml 格式和 yaml 格式完全一样,所以可以合并成一种格式来看。对于这三种格式,以后基本上都是用 yml 格式,以后企业开发过程中用这个格式的机会也最多,要重点掌握。

补充知识

  • 配置文件间的加载优先级 properties(最高)> yml > yaml(最低)
  • 不同配置文件中相同配置按照加载优先级相互覆盖,不同配置文件中不同配置全部保留

yaml文件

YAML(YAML Ain’t Markup Language),一种数据序列化格式。具有容易阅读、容易与脚本语言交互、以数据为核心,重数据轻格式的特点。常见的文件扩展名有两种:

  • .yml格式(主流)
  • .yaml格式

对于文件自身在书写时,具有严格的语法格式要求,具体如下:

  • 大小写敏感
  • 属性层级关系使用多行描述,每行结尾使用冒号结束
  • 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
  • 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
  • #号 表示注释

上述规则不要死记硬背,其中核心的一条规则要记住,数据前面要加空格与冒号隔开

这里列举几种常见的数据书写格式:

boolean: TRUE  						 # TRUE,true,True,FALSE,false,False均可
float: 3.14    						 # 6.8523015e+5  #支持科学计数法
int: 123       						 # 0b1010_0111_0100_1010_1110    #支持二进制、八进制、十六进制
null: ~        						 # 使用~表示null
string: HelloWorld      			 # 字符串可以直接书写
string2: "Hello World"  			 # 可以使用双引号包裹特殊字符
date: 2018-02-17        			 # 日期必须使用yyyy-MM-dd格式
datetime: 2018-02-17T15:02:31+08:00  # 时间和日期之间使用T连接,最后使用+代表时区

此外,yaml 格式中也可以表示数组,在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔

subject:
	- Java
	- 前端
	- 大数据
enterprise:
	name: faith-ye
    age: 22
    subject:
    	- Java
        - 大数据
likes: [王者荣耀,刺激战场]			#数组书写缩略格式
users:							 #对象数组格式一
  - name: Tom
   	age: 4
  - name: Jerry
    age: 5
users:							 #对象数组格式二
  -  
    name: Tom
    age: 4
  -   
    name: Jerry
    age: 5			    
users2: [ { name:Tom , age:4 } , { name:Jerry , age:5 } ]	#对象数组缩略格式

yaml数据读取

对于 yaml 文件中的数据,其实你就可以想象成这就是一个小型的数据库,里面保存有若干数据,每个数据都有一个独立的名字,如果你想读取里面的数据,肯定是支持的,下面就介绍3种读取数据的方式

读取单一数据

yaml 中保存的单个数据,可以使用 Spring 中的注解直接读取,使用 @Value 可以读取单个数据,属性名引用方式:${一级属性名.二级属性名……}

读取全部数据

读取单一数据可以解决读取数据的问题,但是如果定义的数据量过大,这么一个一个书写肯定会累死人的,SpringBoot 提供了一个对象,能够把所有的数据都封装到这一个对象中,这个对象叫做 Environment,使用自动装配注解可以将所有的 yaml 数据封装到这个对象中。获取属性时,通过Environment的接口操作进行,具体方法是 getProperties(String),参数填写属性名即可

读取对象数据

SpringBoot 也提供了可以将一组 yaml 对象数据封装一个Java对象的操作,首先定义一个对象,并将该对象纳入 Spring 管控的范围,也就是定义成一个 bean,然后使用注解 @ConfigurationProperties 指定该对象加载哪一组 yaml 中配置的信息。

下面列举一个常见配置:

server:
  port: 80

spring:
  main:
    banner-mode: off    # 关闭SpringBoot启动图标(banner)
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: root

mybatis-plus:
  global-config:
    banner: off    # 关闭mybatisplus启动图标

yaml文件中数据引用

如果你在书写 yaml 数据时,经常出现如下现象,比如很多个文件都具有相同的目录前缀

center:
	dataDir: D:/usr/local/file/data
    tmpDir: D:/usr/local/file/tmp
    logDir: D:/usr/local/file/log
    msgDir: D:/usr/local/file/msgDir

这个时候你可以使用引用格式来定义数据,其实就是搞了个变量名,然后引用变量了,格式如下:

baseDir: D:/usr/local/file
	center:
    dataDir: ${baseDir}/data
    tmpDir: ${baseDir}/tmp
    logDir: ${baseDir}/log
    msgDir: ${baseDir}/msgDir

还有一个注意事项,在书写字符串时,如果里面存在转义字符,需要使用双引号将其包裹起来

lesson: "Spring\tboot\nlesson"

文章作者: 不才叶某
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 不才叶某 !
评论
  目录