建议收藏 | SpringBoot 元数据配置原来可以这么拓展!

举报
码农架构 发表于 2022/01/14 13:59:17 2022/01/14
【摘要】 Spring Boot jar 包含元数据文件,提供所有支持的配置属性的详细信息。该文件旨在让 IDE 开发者提供上下文相关的帮助和“代码完成”。总结本篇文章希望对从事相关工作的同学能够有所帮助或者启发。

一、背景


最近在调试reactive-steams源码的时候看到spring-boot源码包里面的

  • spring-configuration-metadata.json

  • additional-spring-configuration-metadata.json



说实话主要是metadata吸引了我,因为最近在调整引擎元数据管理确实折腾了很久。


查了官方的资料发现这里也是 SpringBoot 提供的元数据配置拓展,但是这里的元数据不是只在 Spring bean  管理的元数据类似。

▐ 官方解释



访问地址:https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/configuration-metadata.html#configuration-metadata-additional-metadata


简单点可以理解为这类元数据的配置时为了让我们在使用 IDEA 开发的过程中,使用application.properties或者 application.yml配置的时候更有注释说明,更方便我们开发使用。

▐ 官方案例

以我们常用的 logging 配置为例

  • 元数据配置



  • 定义配置



二、应用实例


▐ 插件工厂配置定义

配置元数据文件位于 jar 下面。META-INF/spring-configuration-metadata.json它们使用简单的 JSON 格式,其中的项目分类在“groups”或“properties”下




{    "properties": [        {            "name": "plugin-cache.basePackage",            "type": "java.lang.String",            "description": "文档扫描包路径。"        },        {            "name": "plugin-cache.title",            "type": "java.lang.String",            "description": "Plugin Cache 插件工厂"        },        {            "name": "plugin-cache.description",            "type": "java.lang.String",            "description": "插件工厂描述"        },        {            "name": "plugin-cache.version",            "type": "java.lang.String",            "defaultValue": "V1.0",            "description": "版本。"        }    ]}



复制代码

























大部分元数据文件是在编译时通过处理所有带注释的项目自动生成的

@ConfigurationProperties 可以查看先前的文章

@EnableConfigurationProperties 的工作原理

参考下面 properties 表格进行配置上的理解。


deprecation 每个 properties 元素的属性中包含的 JSON 对象可以包含以下属性:


▐ 插件工厂配置注入


@Data@Component@ConfigurationProperties(PluginCacheProperties.PREFIX)class PluginCacheProperties {
    public static final String PREFIX = "plugin-cache";
    /**     * 文档扫描包路径     */    private String basePackage = "";
    /**     * Plugin Cache 插件工厂     */    private String title = "Plugin Cache 插件工厂";
    /**     * 服务文件介绍     */    private String description = "插件缓存说明";
    /**     * 版本     */    private String version = "V1.0";
    /**     * 默认编码     */    private String charset="UTF-8";
}



复制代码

































▐ 配置应用



三、总结


对于元数据配置,理解起来不难!主要为了组件库为了让使用者更加优化使用提供的一套 IDEA 提示说明。借此我们在开放私有组件或者插件的时候在对于配置项可对外提供开放能力,可以根据元数据配置来完善 IDEA 提示说明。这样其他人用起来的时候能很快知道对应的参数的配置类型以及相关的配置属性说明。总结本篇文章希望对从事相关工作的同学能够有所帮助或者启发


往期推荐


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。