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

简介: Spring Boot jar 包含元数据文件,提供所有支持的配置属性的详细信息。该文件旨在让 IDE 开发者提供上下文相关的帮助和“代码完成”。总结本篇文章希望对从事相关工作的同学能够有所帮助或者启发。

一、背景


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

  • spring-configuration-metadata.json
  • additional-spring-configuration-metadata.json


image.png


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


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

▐ 官方解释


image.png


访问地址: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 配置为例

  • 元数据配置

image.png

image.png

  • 定义配置

image.png


二、应用实例


▐ 插件工厂配置定义

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

image.png


{
"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 表格进行配置上的理解。

image.png

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

image.png

▐ 插件工厂配置注入

@Data@Component@ConfigurationProperties(PluginCacheProperties.PREFIX)
classPluginCacheProperties {
publicstaticfinalStringPREFIX="plugin-cache";
/*** 文档扫描包路径*/privateStringbasePackage="";
/*** Plugin Cache 插件工厂*/privateStringtitle="Plugin Cache 插件工厂";
/*** 服务文件介绍*/privateStringdescription="插件缓存说明";
/*** 版本*/privateStringversion="V1.0";
/*** 默认编码*/privateStringcharset="UTF-8";
}

复制代码

▐ 配置应用

image.png

image.png


三、总结


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


往期推荐

相关文章
|
XML Java 测试技术
SpringBoot入门篇 01、Springboot入门及配置(二)
SpringBoot入门篇 01、Springboot入门及配置(二)
|
NoSQL 安全 Java
SpringBoot 自动配置的原理|学习笔记
快速学习 SpringBoot 自动配置的原理
188 0
SpringBoot 自动配置的原理|学习笔记
|
JSON NoSQL Java
Java--Redis-08-redis在SpringBoot中配置
在Spring Boot中,我们可以通过配置来自定义一个属于我们自己的RedisTemplate。
133 0
Java--Redis-08-redis在SpringBoot中配置
|
前端开发 Java Nacos
《SpringBoot系列三》:自定义配置时@Value和@ConfigurationProperties孰优孰劣?
《SpringBoot系列三》:自定义配置时@Value和@ConfigurationProperties孰优孰劣?
738 1
《SpringBoot系列三》:自定义配置时@Value和@ConfigurationProperties孰优孰劣?
|
Java 容器
SpringBoot2.x基础篇:谈谈SpringBoot内提供的这几种配置绑定
`SpringBoot`在不断地版本迭代中陆续提供了不同的配置参数绑定的方式,我们可以单独获取`一个配置参数`也可以将`一系列的配置`映射绑定到`JavaBean`的属性字段,下面我们来看看这几种方式的配置绑定哪一种是你最常用到的。
SpringBoot2.x基础篇:谈谈SpringBoot内提供的这几种配置绑定
|
XML JSON 开发框架
关于SpringBoot的自动配置和启动过程
关于SpringBoot的自动配置和启动过程
关于SpringBoot的自动配置和启动过程
|
存储 安全 网络协议
springboot 配置ssl 实现https访问
springboot 配置ssl 实现https访问
395 0
springboot 配置ssl 实现https访问
|
Java 应用服务中间件
springboot 中配置最大传输数据或上传文件的大小
springboot 中配置最大传输数据或上传文件的大小
springboot 中配置最大传输数据或上传文件的大小
|
缓存 搜索推荐 Java
《SpringBoot系列十五》源码+案例分析条件装配时多个Condition执行的顺序是什么样的?可以配置优先级吗?
《SpringBoot系列十五》源码+案例分析条件装配时多个Condition执行的顺序是什么样的?可以配置优先级吗?
231 0
《SpringBoot系列十五》源码+案例分析条件装配时多个Condition执行的顺序是什么样的?可以配置优先级吗?
|
运维 Java 数据库
《SpringBoot篇》03.超详细属性配置介绍
《SpringBoot篇》03.超详细属性配置介绍
174 0
《SpringBoot篇》03.超详细属性配置介绍