Spring Boot jar 包含元數(shù)據(jù)文件实檀,提供所有支持的配置屬性的詳細(xì)信息腰根。該文件旨在讓 IDE 開發(fā)者提供上下文相關(guān)的幫助和“代碼完成”家凯。總結(jié)本篇文章希望對從事相關(guān)工作的同學(xué)能夠有所幫助或者啟發(fā)该默。
一、背景
最近在調(diào)試reactive-steams
源碼的時候看到spring-boot
源碼包里面的
spring-configuration-metadata.json
additional-spring-configuration-metadata.json
說實(shí)話主要是metadata
吸引了我策彤,因?yàn)樽罱谡{(diào)整引擎元數(shù)據(jù)管理確實(shí)折騰了很久栓袖。
查了官方的資料發(fā)現(xiàn)這里也是 SpringBoot 提供的元數(shù)據(jù)配置拓展匣摘,但是這里的元數(shù)據(jù)不是只在 Spring bean 管理的元數(shù)據(jù)類似。
? 官方解釋
簡單點(diǎn)可以理解為這類元數(shù)據(jù)的配置時為了讓我們在使用 IDEA 開發(fā)的過程中裹刮,使用application.properties
或者 application.yml
配置的時候更有注釋說明音榜,更方便我們開發(fā)使用。
? 官方案例
以我們常用的 logging 配置為例
- 元數(shù)據(jù)配置
- 定義配置
二捧弃、應(yīng)用實(shí)例
? 插件工廠配置定義
配置元數(shù)據(jù)文件位于 jar 下面赠叼。META-INF/spring-configuration-metadata.json
它們使用簡單的 JSON 格式,其中的項(xiàng)目分類在“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": "版本嘴办。"
}
]
}
復(fù)制代碼
大部分元數(shù)據(jù)文件是在編譯時通過處理所有帶注釋的項(xiàng)目自動生成的
@ConfigurationProperties 可以查看先前的文章
@EnableConfigurationProperties 的工作原理
參考下面 properties 表格進(jìn)行配置上的理解。
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 插件工廠";
/**
* 服務(wù)文件介紹
*/
private String description = "插件緩存說明";
/**
* 版本
*/
private String version = "V1.0";
/**
* 默認(rèn)編碼
*/
private String charset="UTF-8";
}
復(fù)制代碼
? 配置應(yīng)用
三葛家、總結(jié)
對于元數(shù)據(jù)配置户辞,理解起來不難!主要為了組件庫為了讓使用者更加優(yōu)化使用提供的一套 IDEA 提示說明癞谒。借此我們在開放私有組件或者插件的時候在對于配置項(xiàng)可對外提供開放能力底燎,可以根據(jù)元數(shù)據(jù)配置來完善 IDEA 提示說明。這樣其他人用起來的時候能很快知道對應(yīng)的參數(shù)的配置類型以及相關(guān)的配置屬性說明弹砚∷裕總結(jié)本篇文章希望對從事相關(guān)工作的同學(xué)能夠有所幫助或者啟發(fā)