SpringBoot的配置文件
之前SSM项目:
每一个框架都有自己的配置文件, 每一个配置文件头文件不一样, 需要找到每个框架的头文件
SpringBoot的配置文件:
所有的框架的配置项,都可以在application.properties文件配置, 如果自定义一些配置,
修改SpringBoot默认的配置项, 可以在application.properties文件设置
Springboot配置文件能提示, 是idea 提供的功能, 必须添加对应依赖. 才有提示, 如果没有加对应依赖,那就没有这个依赖的相关配置项提示
配置文件分类
1 properties文件:key=value 每个key独占一行
2 yml文件: 有层次,相同的前缀只需要写一个, 下一层的key通过空格缩进
3 yaml文件:yml与yaml 文件后缀名不一样, 但是写法是一样, 是同一类型的文件,
推荐使用yml
yml的语法注意:
上层的key与下层key, 分行, 下层key 与上层key缩进, 缩进不推荐使用tab缩进, 推荐使用空格缩进
上层的key与下层key 直接 使用:分割 , key 与value赋值: key: value key与value之间有空格
同一层的key, 左对齐
在线properties与yml文件转换网站: https://www.toyaml.com/index.html
一个项目可以同时有多种类型配置文件: properties, yml , yaml
- 如果多个配置文件都配置相同的项:
优先级: properties > yml > yaml>默认配置项
- 如果多个配置文件配置不同配置项:
Springboot这些配置文件中配置项都生效, 合并在一起
实际开发, 只选择一种配置文件
读取yml文件中的数据
1.读取单一数据
yaml中保存的单个数据,可以使用Spring中的注解@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名……}
注意:使用@Value注解时,要将该注解写在某一个指定的Spring管控的bean的属性名上方,这样当bean进行初始化时候就可以读取到对应的单一数据了。
2.读取全部数据
读取单一数据可以解决读取数据的问题,但是如果定义的数据量过大,这么一个一个书写肯定会累死人的,SpringBoot提供了一个对象,能够把所有的数据都封装到这一个对象中,这个对象叫做Environment,使用自动装配注解可以将所有的yaml数据封装到这个对象中
数据封装到了Environment对象中,获取属性时,通过Environment的接口操作进行,具体方法是getProperties(String),参数填写属性名即可.
3.读取对象数据
单一数据读取书写比较繁琐,全数据读取封装的太厉害了,每次拿数据还要一个一个的getProperties(),总之用起来都不是很舒服。由于Java是一个面向对象的语言,很多情况下,我们会将一组数据封装成一个对象。SpringBoot也提供了可以将一组yaml对象数据封装一个Java对象的操作
首先定义一个对象,并将该对象纳入Spring管控的范围,也就是定义成一个bean,然后使用注解@ConfigurationProperties指定该对象加载哪一组yaml中配置的信息。
注意:
- 使用@ConfigurationProperties注解绑定配置信息到封装类中
- 封装类需要定义为Spring管理的bean,否则无法进行属性注入
多环境配置
我们开发的项目并不是一定就在一个环境中运行,例如有开发环境(dev), 测试环境(test), 生产环境(prod)。这些环境是都需要配置的。
单一文件配置多环境 :在一个配置文件中配置所有的环境,这种方式不推荐
(只能在yml配置文件有效, properties配置文件无效) 了解
多文件配置多环境: 有多个配置文件来对应相应的环境,(properties支持, yml支持)
1.每个环境有对应的配置文件:
application-环境名.properties
每一个环境配置文件中不需要使用spring.profiles 指定名字, 文件名可以区分
2.在主配置文件中: application.properties文件,激活那个环境
spring.profiles.active=dev