「这是我参与 2022 首次更文挑战的第 3 天,活动详情查看:2022 首次更文挑战」
居上位而不骄,在下位而不忧。
前言
在日常的开发工作中,springboot
作为 java web
开发的主流框架,许多小伙伴都有自己丰富的使用经验和心得。springboot
采用了约定大于配置的方式,极大了简化了 spring
框架开发中对文件配置的要求,做到了简单明了易上手。今天介绍的是从项目搭建开始介绍一些小技巧,为开发工作带来便利。
配置文件
在日常的开发中,在 application.yml
或者 application.properties
中配置一些文件,用来开展一些业务,如下图所示:
app:
info:
name : 小明12
age: 12
birthday: 2022-01-22
weight: 23.4
height: 32
money: 12.0
user_pets:
- dog
- cat
user_ext:
learn: maths
hobby: runing
大家都会想到使用 @ConfigurationProperties
来解析配置文件中的内容,在实际的操作中也是使用这种方式比较方便一点。记得之前在 spring 项目中采用的是@Value
的方式来注入配置信息,需要写的内容是相当多的。而在 springboot
中,可以实现配置与 java bean
的映射,还会完成下划线到驼峰格式的转化,相当的 nice。在@ConfigurationProperties
中添加 prefix
参数来指定前缀可以使得配置与 java bean
映射无缝衔接。这里列举了几种常用的类型,而且添加了 list 以及 map 的结构,除了 date 类型的比较特殊,需要进行格式的转换,其他的类型基本不需要。
到这里,大多数的工作就结束了,但是会有一个不爽的地方,如下图所示,显示是不能解析这个配置,但是不影响项目的运行,只是打开文件的时候不太美观。这是因为 springboot
不会识别自定义的配置文件,少了一些 metadata.json
解析文件,如何解决这个问题呢?只需要在 pom.xml
中再引入一个依赖即可解决这个问题:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
引入依赖后,再次编译项目,会在 target
中 META-INF
生成一个 metadata.json
文件,如下图所示,就是将需要配置的信息进行了设置。
完成以上的配置后,再次编辑配置信息时就会给予提示信息,而且不会有黄色底纹不能解析的情况。
此外在配置文件中,配置文件按类型的加载顺序为,配置文件如果有冲突,那么最后一次加载的配置会覆盖前一次加载的配置。
# 配置文件的加载顺序
yml -> yaml -> properties
配置文件的位置加载顺序如下,如果有冲突则以最后一次加载的配置为准,这个和文件的类型是一致的。
# 配置文件的加载顺序
–classpath:/
–classpath:/config/
–file:./
–file:./config/
根据以上,可以得出结论 properties
的优先级高于 yml
,classpath:/config/
的优先级高于 classpath:/
。