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

网友投稿 788 2022-05-30

一、背景

最近在调试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

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

简单点可以理解为这类元数据的配置时为了让我们在使用 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 提示说明。这样其他人用起来的时候能很快知道对应的参数的配置类型以及相关的配置属性说明。总结本篇文章希望对从事相关工作的同学能够有所帮助或者启发

往期推荐

Spring Boot 实现通用 Auth 认证的 4 种方式

@EventListener注解的使用以及工作原理解读

如何规范你的Git 提交格式?

微服务架构 | 如何让接口权限继续继承下去?

Java 18 都要来了,你不会还在用Java 8吧?

Spring Spring Boot

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:什么是Docker Compose
下一篇:【Python技能树共建】lxml 模块 R2
相关文章