文章目录
- 一.配置文件格式
- 前言
- 1.1 application.properties配置文件
- 1.2 application.yml配置文件
- 1.3 application.yaml配置文件
- 1.4 在配合文件中如果没有提示
- 1.5 三种配合文件的优先级
- 二. yml格式
- 2.1 优点
- 2.2 YAML 文件扩展名
- 2.3 语法规则
- 2.4 配置
- 三. 配置文件数据读取
- 3.1 环境准备
- 3.2 读取配置数据
- 3.2.1 使用 @Value注解
- 3.2.2 Environment对象
- 3.2.3 自定义对象
一.配置文件格式
前言
我们现在启动服务器默认的端口号是 8080 ,访问路径可以书写为
http://localhost:8080/books/1
在线上环境我们还是希望将端口号改为 80 ,这样在访问的时候就可以不写端口号了,如下
http://localhost/books/1
而 SpringBoot 程序如何修改呢? SpringBoot 提供了多种属性配置方式
1.1 application.properties配置文件
现在需要进行配置,配合文件必须放在 resources 目录下,而该目录下有一个名为 application.properties 的配置文 件,我们就可以在该配置文件中修改端口号,在该配置文件中书写 port , Idea 就会提示,如下
application.properties 配置文件内容如下:
server.port=80
1.2 application.yml配置文件
删除 application.properties 配置文件中的内容。在 resources 下创建一个名为 application.yml 的配置文件,在 该文件中书写端口号的配置项,格式如下:
server:port: 81
注意: 在 : 后,数据前一定要加空格。
而在 yml 配置文件中也是有提示功能的,我们也可以在该文件中书写 port ,然后 idea 就会提示并书写成上面的格式
1.3 application.yaml配置文件
删除 application.yml 配置文件和 application.properties 配置文件内容,然后在 resources 下创建名为 application.yaml 的配置文件,配置内容和后缀名为 yml 的配置文件中的内容相同,只是使用了不同的后缀名而已 application.yaml 配置文件内容如下:
server:port: 83
1.4 在配合文件中如果没有提示
注意:在配合文件中如果没有提示,可以使用下面方式解决
点击 File 选中 Project Structure
弹出如下窗口,按图中标记红框进行选择
通过上述操作,会弹出如下窗口
点击上图的 + 号,弹出选择该模块的配置文件
通过上述几步后,就可以看到如下界面。 properties 类型的配合文件有一个, ymal 类型的配置文件有两个
注意: SpringBoot 程序的配置文件名必须是 application ,只是后缀名不同而已。
1.5 三种配合文件的优先级
在三种配合文件中分别配置不同的端口号,启动服务查看绑定的端口号。用这种方式就可以看到哪个配置文件的优先级更高 一些
application.properties 文件内容如下:
server.port=80
application.yml 文件内容如下:
server:port: 81
application.yaml 文件内容如下:
server:port: 82
启动服务,在控制台可以看到使用的端口号是 80 。说明 application.properties 的优先级最高。
注释掉 application.properties 配置文件内容。再次启动服务,在控制台可以看到使用的端口号是 81 ,说明 application.yml 配置文件为第二优先级。
从上述的验证结果可以确定三种配置文件的优先级是:
application.properties > application.yml > application.yaml
- 注意: SpringBoot 核心配置文件名为 application SpringBoot
- 内置属性过多,且所有属性集中在一起修改,在使用时,通过提示键+关键字修改属性。例如要设置日志的级别时,可以在配置文件中书写 logging ,就会提示出来。配置内容如下
logging:level:root: info
虽然springboot支持多种格式配置文件,但是在项目开发时,推荐统一使用一种格式的配置 (yml是主流)。
lSpringBoot 除了支持配置文件属性配置,还支持Java系统属性和命令行参数的方式进行属性配置。
二. yml格式
YAML(YAML Ain’t Markup Language),一种数据序列化格式。
2.1 优点
- 容易阅读 yaml 类型的配置文件比 xml 类型的配置文件更容易阅读,结构更加清晰。
- 容易与脚本语言交互。
- 以数据为核心,重数据轻格式。 yaml 更注重数据,而 xml 更注重格式。
2.2 YAML 文件扩展名
-
.yml (主流)
-
.yaml
上面两种后缀名都可以,以后使用更多的还是 yml 的。
2.3 语法规则
- 大小写敏感
- 属性层级关系使用多行描述,每行结尾使用冒号结束
- 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键) 空格的个数并不重要,只要保证同层级的左侧对齐即可。
- 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
- #表示注释
核心规则:数据前面要加空格与冒号隔开
数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔,例如
enterprise:
name: itcast
age: 16
tel: 4006184000
subject:
- Java
- 前端
- 大数据
2.4 配置
三. 配置文件数据读取
3.1 环境准备
3.2 读取配置数据
3.2.1 使用 @Value注解
使用 @Value(“表达式”) 注解可以从配合文件中读取数据,注解中用于读取属性名引用方式是: ${一级属性名.二级属性名……}
@Value 注解通常用于外部配置的属性注入,具体用法为: @Value(“${配置文件中的key}”)
3.2.2 Environment对象
上面方式读取到的数据特别零散, SpringBoot 还可以使用 @Autowired 注解注入 Environment 对象的方式读取数据。这 种方式 SpringBoot 会将配置文件中所有的数据封装到 Environment 对象中,如果需要使用哪个数据只需要通过调用 Environment 对象的 getProperty(String name) 方法获取。
注意:这种方式,框架内容大量数据,而在开发中我们很少使用。
3.2.3 自定义对象
SpringBoot 还提供了将配置文件中的数据封装到我们自定义的实体类对象中的方式。具体操作如下:
- 将实体类 bean 的创建交给 Spring 管理。 在类上添加 @Component 注解
- 使用 @ConfigurationProperties 注解表示加载配置文件 在该注解中也可以使用 prefix 属性指定只加载指定前缀的数据
- 在 BookController 中进行注入