要须心地收汗马,孔孟行世目杲杲。这篇文章主要讲述建议收藏 | SpringBoot 元数据配置原来可以这么拓展!相关的知识,希望能为你提供帮助。
导读: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 提示说明。这样其他人用起来的时候能很快知道对应的参数的配置类型以及相关的配置属性说明。总结本篇文章希望对从事相关工作的同学能够有所帮助或者启发
往期推荐
- Spring Boot 实现通用 Auth 认证的 4 种方式
- @EventListener注解的使用以及工作原理解读
- 如何规范你的Git 提交格式?
- 微服务架构 | 如何让接口权限继续继承下去?
- Java 18 都要来了,你不会还在用Java 8吧?
【建议收藏 | SpringBoot 元数据配置原来可以这么拓展!】
推荐阅读
- Flutter 专题57 图解页面小跳转#yyds干货盘点#
- 微服务架构 | 3.2 Alibaba Nacos 注册中心 #yyds干货盘点#
- 隐藏了2年的Bug,终于连根拔起,悲观锁并没有那么简单
- #yyds干货盘点#web安全day47(口令字典crunchcupphydraMSF-psexec_psh的使用)
- #yyds干货盘点# Spring的@Autowired依赖注入原来这么多坑!
- 全网最详细之pt-osc 处理MySQL外键表流程分析
- Kubernetes官方java客户端之六(OpenAPI基本操作)
- Spring认证中国教育管理中心-Spring Data Couchbase教程九
- 特定页面模板的WP自定义元框