SpringBoot02 —— 基础配置

概述:SpringBoot的基础配置,包括属性配置,配置文件分类,yaml文件,yaml数据读取

复制工程

原则

  • 保留工程基础结构

  • 抹掉原始工程痕迹

步骤

  • 在工作空间中复制对应工程,并修改工程名称

  • 删除与Idea相关配置文件,仅保留src目录与pom.xml文件

  • 修改pom.xml文件中的artifactId与新工程/模块名相同(务必注意!)

  • 删除name标签(可选)

  • 保留备份工程供后期使用

属性配置

SpringBoot通过配置文件application.properties就可以修改默认的配置

服务器端口配置

当前访问tomcat的默认端口是8080,尝试改成80:

1
2
# 服务器端口配置
server.port=80

注意要实现查看端口是否占用

关闭运行日志图标(banner)

1
2
3
# 修改banner
spring.main.banner-mode=off
# spring.banner.image.location=logo.png

设置日志相关

1
2
3
# 日志debug info error
logging.level.root=info
# logging.level.com.itheima=warn

SpringBoot内置属性查询

官方文档

官方文档中参考文档第一项:Application Properties

总结

  • SpringBoot中导入对应starter后,提供对应配置属性

  • 书写SpringBoot配置采用关键字+提示形式书写

配置文件分类

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

  • properties格式(传统格式/默认格式)
  • yml格式(主流格式)
  • yaml格式

下面列举三种不同文件格式配置相同的属性范例:

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

yml格式和yaml格式除了文件名后缀不一样,格式完全一样,所以可以合并成一种格式来看。

对于这三种格式来说,yml格式在实际中用得比较多

配置文件优先级

3种类型的文件如果同时存在,那么加载优先顺序是:

.properties > .yml > .yaml

不同配置文件中相同配置按照加载优先级相互覆盖,不同配置文件中不同配置全部保留

yaml文件

YAML(YAML Ain’t Markup Language),一种数据序列化格式

优点:

  • 容易阅读
  • 容易与脚本语言交互
  • 以数据为核心,重数据轻格式

YAML文件扩展名

  • .yml(主流)

  • .yaml

yaml语法规则

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

示例:

1
2
3
4
5
6
7
8
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格式中也可以表示数组,在属性名书写位置的下方使用减号作为数据开始符号每行书写一个数据,减号与数据间空格分隔

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
subject:
- Java
- 前端
- 大数据
enterprise:
name: itcast
age: 16
subject:
- Java
- 前端
- 大数据
likes: [game,study] #数组书写缩略格式
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文件中的数据,其实可以想象成这就是一个小型的数据库,里面保存有若干数据,每个数据都有一个独立的名字

读取单一数据

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

读取全部数据

SpringBoot提供了一个对象,能够把所有的数据都封装到这一个对象中,这个对象叫Environment,使用自动装配注解可以将所有的yaml数据封装到这个对象中

读取对象数据

由于Java是一个面向对象的语言,很多情况下,我们会将一组数据封装成一个对象。SpringBoot也提供了可以将一组yaml对象数据封装一个Java对象的操作

首先定义一个对象,并将该对象纳入Spring管控的范围,也就是定义成一个bean,然后使用注解@ConfigurationProperties指定该对象加载哪一组yaml中配置的信息。

这个@ConfigurationProperties必须告诉他加载的数据前缀是什么,这样指定前缀下的所有属性就封装到这个对象中。注意数据属性名要与对象的变量名一一对应.

  • 使用@ConfigurationProperties注解绑定配置信息到封装类中
  • 封装类需要定义为Spring管理的bean(使用@Component),否则无法进行属性注入

yaml文件中的数据引用

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

1
2
3
4
5
center:
dataDir: D:/usr/local/fire/data
tmpDir: D:/usr/local/fire/tmp
logDir: D:/usr/local/fire/log
msgDir: D:/usr/local/fire/msgDir

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

1
2
3
4
5
6
baseDir: /usr/local/fire
center:
dataDir: ${baseDir}/data
tmpDir: ${baseDir}/tmp
logDir: ${baseDir}/log
msgDir: ${baseDir}/msgDir

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

1
lesson: "Spring\tboot\nlesson"
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022 ZHU
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信