springboot 开发小技巧

1,433 阅读3分钟

「这是我参与 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>

引入依赖后,再次编译项目,会在 targetMETA-INF 生成一个 metadata.json 文件,如下图所示,就是将需要配置的信息进行了设置。

生成的配置文件

完成以上的配置后,再次编辑配置信息时就会给予提示信息,而且不会有黄色底纹不能解析的情况。

编辑配置信息给予提示

此外在配置文件中,配置文件按类型的加载顺序为,配置文件如果有冲突,那么最后一次加载的配置会覆盖前一次加载的配置。

# 配置文件的加载顺序
yml -> yaml ->  properties

配置文件的位置加载顺序如下,如果有冲突则以最后一次加载的配置为准,这个和文件的类型是一致的。

# 配置文件的加载顺序
–classpath:/
–classpath:/config/
–file:./
–file:./config/

根据以上,可以得出结论 properties 的优先级高于 yml,classpath:/config/ 的优先级高于 classpath:/