SpringBoot配置文件详解
本文最后更新于:1 年前
SpringBoot默认配置文件为application.properties,通过键值对配置对应属性。此外还支持另外两种格式的配置文件,分别为:
- yml格式(主流格式)
- yaml格式
配置文件优先级为:application.properties > application.yml > application.yaml。不同配置文件中相同配置按照加载优先级相互覆盖,不同配置文件中不同配置全部保留。
常用属性配置
SpringBoot默认配置文件为application.properties,通过键值对配置对应属性。
修改服务器端口
1
server.port=80
关闭运行日志图标(banner)
1
2spring.main.banner-mode=off
# spring.banner.image.location=girls.png设置日志相关
1
2logging.level.root=DEBUG
# logging.level.cc.gaojie=WARN
SpringBoot更多内置属性查询:
官方文档中参考文档第一项:Application Properties。
配置文件分类
SpringBoot除了支持properties格式的配置文件,还支持另外两种格式的配置文件。分别如下:
- properties格式
- yml格式(主流格式)
- yaml格式
IDEA中配置文件的自动提示功能消失时,可按如下步骤指定SpringBoot配置文件:『Setting → Project Structure → Facets → 选中对应项目/工程 → Customize Spring Boot → 选择配置文件』。
配置文件优先级
按上面的配置,启动后发现目前的启动端口为80,把80对应的文件删除掉,然后再启动,现在端口又改成了81。因此3个文件的加载优先顺序如下:
1 |
|
进一步实验我们会发现,其实每个配置文件中的项都会生效,只不过如果多个配置文件中有相同类型的配置,优先级高的文件会覆盖优先级低的文件中的配置。如果配置项不同的话,那所有的配置项都会生效。即不同配置文件中相同配置按照加载优先级相互覆盖,不同配置文件中不同配置全部保留。
yaml 文件详解
yaml 语法规则
核心规则:数据前面要加空格与冒号隔开。
字面值表示方式
数组表示方式
在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔。
特殊字符格式
如果属性中出现特殊字符,可以使用双引号包裹起来作为字符解析。
1 |
|
yaml中数据引用
在yaml配置文件中可以使用${属性名}
的方式引用属性值。
yaml 数据读取
读取单一数据
- 使用@Value读取单个数据,属性名引用方式:
${一级属性名.二级属性名……}
- 如果数据存在多层级,依次书写层级名称即可。
读取全部数据
SpringBoot提供了一个对象,能够把所有的数据都封装到这一个对象中,这个对象叫做 Environment,使用自动装配注解@Autowired可以将所有的yaml数据封装到这个对象中。
- 使用Environment对象封装全部配置信息
- 使用@Autowired注解自动装配数据到Environment对象中
获取属性时,通过Environment的接口操作进行,具体方法为 getProperties(String key)
,参数填写属性名即可:
读取对象数据
很多情况下,我们会将一组数据封装成一个对象。SpringBoot也提供了可以将一组yaml对象数据封装一个Java对象的操作。
- 使用@ConfigurationProperties注解绑定配置信息到封装类中(指定该对象加载yaml中哪一组配置的信息)
- 封装类需要定义为Spring管理的bean,否则无法进行属性注入
- 封装类中的变量名要与yaml中数据属性名一一对应
首先定义一个对象,并将该对象纳入Spring管控的范围,也就是定义成一个bean,然后使用注解@ConfigurationProperties指定该对象加载yaml中哪一组配置的信息:
@ConfigurationProperties指定要加载的数据的前缀是什么,该前缀下的所有属性就会封装到这个对象中。数据属性名要与对象的变量名一一对应。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!