前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring-configuration-metadata.json文件是做啥的?

spring-configuration-metadata.json文件是做啥的?

作者头像
程序猿DD
发布2022-05-30 14:17:45
1.5K0
发布2022-05-30 14:17:45
举报
文章被收录于专栏:程序猿DD程序猿DD

在前几天分享的关于Spring Boot Starter中的spring.factories文件不再推荐使用的视频下,看到有网友问了这样一个问题:

图 1

这个文件也是位于/META-INF/目录下面:

图 2

里面的大概是这样的:

代码语言:javascript
复制
{
  "groups": [
    {
      "name": "swagger",
      "type": "com.spring4all.swagger.SwaggerProperties",
      "sourceType": "com.spring4all.swagger.SwaggerProperties"
    },
    {
      "name": "swagger.authorization",
      "type": "com.spring4all.swagger.SwaggerAuthorizationProperties",
      "sourceType": "com.spring4all.swagger.SwaggerAuthorizationProperties"
    },
    {
      "name": "swagger.contact",
      "type": "com.spring4all.swagger.SwaggerProperties$Contact",
      "sourceType": "com.spring4all.swagger.SwaggerProperties"
    },
    ...
    "properties": [
    {
      "name": "swagger.apply-default-response-messages",
      "type": "java.lang.Boolean",
      "description": "是否使用默认预定义的响应消息 ,默认 true",
      "sourceType": "com.spring4all.swagger.SwaggerProperties",
      "defaultValue": true
    },
    {
      "name": "swagger.authorization.auth-regex",
      "type": "java.lang.String",
      "description": "需要开启鉴权URL的正则",
      "sourceType": "com.spring4all.swagger.SwaggerAuthorizationProperties",
      "defaultValue": "^.*$"
    },
    ...

spring.factories的作用是让Spring Boot知道要加载这个Starter的哪些配置类,而这个文件又有啥用呢?

其实,之前我在Spring Boot教程(https://blog.didispace.com/spring-boot-learning-2x/)中有具体讲过,这个内容是配置元数据。

它的主要作用就是,当我们在配置文件中尝试编写配置信息的时候,IDE可以根据这个配置元数据给出了相关的提示信息,比如:

图 3

所以,要做一个体验良好的Starter,这个文件还是非常重要的,对于使用你封装的开发者来说,写配置的时候就会方便很多。

如何自动生成?

既然spring.factories可以自动生成,那么spring-configuration-metadata.json文件可以自动生成吗?

答案是肯定的,不然维护这个json文件都会累死人!

你只需要在你的pom.xml中加入这个依赖:

代码语言:javascript
复制
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>

一切就都搞定了,当你再次编译的时候,spring-configuration-metadata.json文件就自动出现啦!不过,这里还有个前提,你在写配置属性类的时候,有好好写注释,那么自动提示就都会带上了,比如下面这样:

代码语言:javascript
复制
@Data
@ConfigurationProperties("swagger")
public class SwaggerProperties {

    /**
     * 标题
     **/
    private String title = "";
    /**
     * 描述
     **/
    private String description = "";

我们创建了一个高质量的技术交流群,与优秀的人在一起,自己也会优秀起来,赶紧点击加群,享受一起成长的快乐。另外,如果你最近想跳槽的话,年前我花了2周时间收集了一波大厂面经,节后准备跳槽的可以点击这里领取

推荐阅读

··································

你好,我是程序猿DD,10年开发老司机、阿里云MVP、腾讯云TVP、出过书创过业、国企4年互联网6年。从普通开发到架构师、再到合伙人。一路过来,给我最深的感受就是一定要不断学习并关注前沿。只要你能坚持下来,多思考、少抱怨、勤动手,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。如果你看好一个事情,一定是坚持了才能看到希望,而不是看到希望才去坚持。相信我,只要坚持下来,你一定比现在更好!如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯,帮你积累弯道超车的资本。

点击领取2022最新10000T学习资料

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序猿DD 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何自动生成?
    • 推荐阅读
    相关产品与服务
    云开发 CloudBase
    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档