springboot之a(chǎn)dditional-spring-configuration-metadata.json自定義提示

springboot之a(chǎn)dditional-spring-configuration-metadata.json自定義提示

簡介

additional-spring-configuration-metadata.json土至、spring-configuration-metadata.jsonspringboot-starter官方項目或第三方starter項目中隨處可見,那它起的作用是什么?讓我們一起探討一下。

官方文章

官方一篇文章很詳細講解了Configuration Metadata的作用。
有興趣的小伙伴可以查看下(配置元數(shù)據(jù))筋遭。

Configuration Metadata

Appendix B. Configuration Metadata
Spring Boot jars include metadata files that provide details of all supported configuration properties. The files are designed to let IDE developers offer contextual help and “code completion” as users are working with application.properties or application.yml files.

The majority of the metadata file is generated automatically at compile time by processing all items annotated with @ConfigurationProperties. However, it is possible to write part of the metadata manually for corner cases or more advanced use cases.

簡介說明配置additional-spring-configuration-metadata.json文件后,在開發(fā)人員的IDE工具使用個人編寫的配置讀取很有效的在application.propertiesapplication.yml文件下完成提示。

使用

1. 元數(shù)據(jù)格式

配置元數(shù)據(jù)文件位于jar下面霜定。 META-INF/spring-configuration-metadata.json它們使用簡單的JSON格式,其中的項目分類在“groups”或“properties”下廊鸥,其他值提示分類在“hints”下望浩,如下例所示:

{"groups": [
    {
        "name": "server",
        "type": "org.springframework.boot.autoconfigure.web.ServerProperties",
        "sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties"
    }
    ...
],"properties": [
    {
        "name": "server.port",
        "type": "java.lang.Integer",
        "sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties"
    }
    ...
],"hints": [
    {
        "name": "spring.jpa.hibernate.ddl-auto",
        "values": [
            {
                "value": "none",
                "description": "Disable DDL handling."
            },
            {
                "value": "validate",
                "description": "Validate the schema, make no changes to the database."
            }
        ]
    }
]}

2.properties提示編寫

當然了我們需要編寫META-INF/additional-spring-configuration-metadata.json進行拓展。

下面簡單創(chuàng)建一個starter使用additional-spring-configuration-metadata.json進行提示惰说。

resources/META-INF目錄下創(chuàng)建additional-spring-configuration-metadata.json

image.png

內(nèi)容大致如下:

{"properties": [
    {
      "name": "swagger.basePackage",
      "type": "java.lang.String",
      "description": "文檔掃描包路徑磨德。"
    },
    {
      "name": "swagger.title",
      "type": "java.lang.String",
      "defaultValue": "平臺系統(tǒng)接口詳情",
      "description": "title 如: 用戶模塊系統(tǒng)接口詳情。"
    },
    {
      "name": "swagger.description",
      "type": "java.lang.String",
      "defaultValue": "在線文檔",
      "description": "服務(wù)文件介紹吆视。"
    },
    {
      "name": "swagger.termsOfServiceUrl",
      "type": "java.lang.String",
      "defaultValue": "https://www.test.com/",
      "description": "服務(wù)條款網(wǎng)址典挑。"
    },
    {
      "name": "swagger.version",
      "type": "java.lang.String",
      "defaultValue": "V1.0",
      "description": "版本。"
    }
]}

大家參考下面properties表格進行配置上的理解啦吧。

名稱 類型 目的
name String 屬性的全名您觉。名稱采用小寫的周期分隔形式(例如server.address)。此屬性是強制性的授滓。
type String 屬性的數(shù)據(jù)類型的完整簽名(例如java.lang.String)琳水,但也是完整的泛型類型(例如java.util.Map<java.util.String,acme.MyEnum>)。您可以使用此屬性來指導(dǎo)用戶可以輸入的值的類型般堆。為了保持一致性在孝,通過使用其包裝對應(yīng)項(例如,boolean變?yōu)閖ava.lang.Boolean)來指定基元的類型淮摔。請注意浑玛,此類可能是一個復(fù)雜類型,它從Stringas綁定的值轉(zhuǎn)換而來噩咪。如果類型未知顾彰,則可以省略。
description String 可以向用戶顯示的組的簡短描述胃碾。如果沒有可用的描述涨享,則可以省略。建議描述為簡短段落仆百,第一行提供簡明摘要厕隧。描述中的最后一行應(yīng)以句點(.)結(jié)尾。
sourceType String 貢獻此屬性的源的類名稱。例如吁讨,如果屬性來自帶注釋的類@ConfigurationProperties髓迎,則此屬性將包含該類的完全限定名稱。如果源類型未知建丧,則可以省略排龄。
defaultValue Object 默認值,如果未指定屬性翎朱,則使用該值橄维。如果屬性的類型是數(shù)組,則它可以是值數(shù)組拴曲。如果默認值未知争舞,則可以省略。

deprecation每個properties元素的屬性中包含的JSON對象可以包含以下屬性:

名稱 類型 目的
level String 棄用級別澈灼,可以是warning(默認)或error竞川。當屬性具有warning棄用級別時,它仍應(yīng)綁定在環(huán)境中叁熔。但是流译,當它具有error棄用級別時,該屬性不再受管理且不受約束者疤。
reason String 該屬性被棄用的原因的簡短描述福澡。如果沒有可用的原因,可以省略驹马。建議描述為簡短段落革砸,第一行提供簡明摘要。描述中的最后一行應(yīng)以句點(.)結(jié)尾糯累。
replacement String 替換此不推薦使用的屬性的屬性的全名算利。如果此屬性沒有替換,則可以省略泳姐。

對應(yīng)的@ConfigurationProperties類如下:

@Data
@ConfigurationProperties(SwaggerProperties.PREFIX)
public class SwaggerProperties {

  public static final String PREFIX = "swagger";

  /**
   * 文檔掃描包路徑
   */
  private String basePackage = "";

  /**
   * title 如: 用戶模塊系統(tǒng)接口詳情
   */
  private String title = "平臺系統(tǒng)接口詳情";

  /**
   * 服務(wù)文件介紹
   */
  private String description = "在線文檔";

  /**
   * 服務(wù)條款網(wǎng)址
   */
  private String termsOfServiceUrl = "https://www.test.com/";

  /**
   * 版本
   */
  private String version = "V1.0";

}

現(xiàn)在就可以在application.properties文件里嘗試提示效拭。

image.png

總結(jié)

當然了,這個只是實現(xiàn)了簡單的配置提示功能胖秒,其他的功能大家可以再次產(chǎn)考(配置元數(shù)據(jù))文章進行學(xué)習(xí)缎患。

示例代碼地址: swagger-spring-boot

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市阎肝,隨后出現(xiàn)的幾起案子挤渔,更是在濱河造成了極大的恐慌,老刑警劉巖风题,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件判导,死亡現(xiàn)場離奇詭異嫉父,居然都是意外死亡,警方通過查閱死者的電腦和手機眼刃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門绕辖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人擂红,你說我怎么就攤上這事仪际。” “怎么了篮条?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吩抓。 經(jīng)常有香客問我涉茧,道長,這世上最難降的妖魔是什么疹娶? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任伴栓,我火速辦了婚禮,結(jié)果婚禮上雨饺,老公的妹妹穿的比我還像新娘钳垮。我一直安慰自己,他們只是感情好额港,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布饺窿。 她就那樣靜靜地躺著,像睡著了一般移斩。 火紅的嫁衣襯著肌膚如雪肚医。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天向瓷,我揣著相機與錄音肠套,去河邊找鬼。 笑死猖任,一個胖子當著我的面吹牛你稚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播朱躺,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼刁赖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了长搀?” 一聲冷哼從身側(cè)響起乾闰,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盈滴,沒想到半個月后涯肩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體轿钠,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年病苗,在試婚紗的時候發(fā)現(xiàn)自己被綠了疗垛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡硫朦,死狀恐怖贷腕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咬展,我是刑警寧澤泽裳,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站破婆,受9級特大地震影響涮总,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜祷舀,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一瀑梗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧裳扯,春花似錦抛丽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冤吨,卻和暖如春狡门,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锅很。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工其馏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人爆安。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓叛复,卻偏偏與公主長得像,于是被迫代替她去往敵國和親扔仓。 傳聞我的和親對象是個殘疾皇子褐奥,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容