javascript
Spring Bootstrap中具有配置元数据的高级配置
在簡要介紹了配置元數據并涵蓋了我之前的文章《 在Spring Boot中使用配置元數據Pimp您的配置》中的基礎知識之后,現在該看看如何進一步執行此步驟并進一步自定義配置。 在這篇文章中,我計劃提出對配置屬性的棄用,并討論各種值提供程序,這些值提供程序允許我經歷過最舒適的應用程序配置之一(在嘗試寫出完整內容的同時,在配置中打錯字的時代已經過去了。合格的類名稱或資源路徑–讓我們高興。
棄用財產
在進行配置時,一種確定的招致麻煩的方法是引入突然的,無記錄的重大更改,這些更改可能導致應用程序初始化或運行時失敗。 Spring Boot引入了一個選項,用于標記和記錄要棄用的屬性,以應對這種情況。 秉承簡單聲明的精神,一旦準備好一個新的(替換)屬性,您要做的就是將deprecation JSON節點添加到property additional-spring-configuration-metadata.json文件的property描述中:
棄用財產
... {"name": "my.property","defaultValue": "something","deprecation": {"replacement": "my.new-property","reason": "This property is no longer needed."} } ...重新編譯項目后,支持此功能的工具將獲取更改并根據其設置反映出來。 下圖描繪了可用配置屬性的列表,其中已棄用的屬性已明確標記。
如果您已經在屬性文件中的某個位置使用了不推薦使用的屬性,則基于您使用的顏色主題和IDE,事情可能會變得有些奇怪。 我喜歡將IDEA與黑曜石主題結合使用,從而突出顯示以下文本。 它本來可以做得更好,但是一旦您習慣了它,并理解了每種顏色代表什么,就沒有問題了。 請記住一點。
您也可以更深入地了解為什么將此屬性標記為不推薦使用。 只需調用此屬性的文檔(默認情況下,通過在IDEA中按CTRL + Q),您將看到類似于此窗口的內容,該窗口呈現了我先前在additional-spring-configuration-metadata.json文件中定義additional-spring-configuration-metadata.json 。 該查找適用于所有屬性,并且取決于您的代碼和其他配置元數據獲得的詳細程度和描述性。
鏈接到應該替換/替換當前屬性的屬性特別有用。 這意味著您可以使用意圖操作(在IDEA中,默認情況下通過按ALT + ENTER調用)并執行已淘汰屬性的單次替換。 萬一屬性值可以保持不變,您已經做好了一切。 否則,您還需要更新該值。 漂亮整齊!
價值提供者
值提供程序僅可用于手動提供的提示(使用文件additional-spring-configuration-metadata.json )。 Spring Boot將它們定義為一種描述屬性潛在值列表的方法,通過關聯提供程序以將明確定義的語義附加到屬性,以便工具可以根據項目的上下文發現潛在值列表。 這聽起來可能有點含糊,但是它確實是很酷的功能,它使您可以利用類層次結構,資源結構或Spring自己的上下文中的幾乎所有方面。
類參考
讓我們從一個非常簡單但非常實用的東西開始-類引用提供程序。 如果我想根據應用程序的部署位置來配置應在應用程序中使用哪種策略,我可以實施幾種策略實現并創建一個屬性來捕獲這一部分配置。 我的每個策略都實現一個IStrategy接口。 通過在hints additional-spring-configuration-metadata.json文件的hints部分中提供一個簡單的提供程序聲明,我可以大大簡化該屬性的填寫。
類引用的例子
...{"name": "my.strategy","providers": [{"name": "class-reference","parameters": {"target": "com.jakubstas.s3downloader.strategy.IStrategy"}}]} ...更新手動輸入的元數據并重新編譯項目后,策略屬性將顯示在可用屬性列表中。 這里沒有新內容。
但是,當涉及到值選擇時,可用值列表僅限于已定義接口的實現。 當您需要配置要使用的類/實現或配置的任何其他方面時,這將很有用。
很棒的事情是,您不必費心為每個可用的類提供其他描述,因為您仍然可以使用文檔查找操作(通過在IDEA中默認按CTRL + Q)。 這使開發人員可以簡單地瀏覽可用選項,并非常舒適地選擇最適合的選項,而不會費力。
處理為
請像處理另一個很酷的提供程序一樣處理。 它允許您將屬性的類型替換為更高級的類型。 這只是一種幻想的表達方式,您希望您的IDE將此字符串屬性視為“資源”,而無需對任何給定的框架類(可能不在類路徑上)創建顯式依賴。 與先前討論的提供程序相比,此提供程序就像變色龍–它允許自動完成諸如字符集,mime類型,枚舉,語言環境或資源之類的東西,并且還支持集合的使用。
話雖這么說,我們可能希望在我們的應用程序中使用不同的條款和條件信息,并且還能夠在每個版本的不同版本之間進行切換,而無需發布整個程序。 我的配置中引入了新屬性來支持此要求。 通過像在此代碼段中那樣在Additional additional-spring-configuration-metadata.json的hints部分中提供一個簡單的提供程序聲明,我將只能瀏覽我的資源并快速導航到我要使用的文件。
將屬性作為資源處理
...{"name": "my.terms-and-conditions","providers": [{"name": "handle-as","parameters": {"target": "org.springframework.core.io.Resource"}}]} ...呈現給您的第一件事是您要使用的資源類型的選擇(是的,它支持資源字符串前綴:))。
我想使用classpath資源,然后導航至文件。 由于您可能希望將文件夾本身用作資源,因此需要自己提供文件分隔符。
其他
還有其他一些價值提供者值得一試,我將不像前兩個那樣詳細討論。 讓我們快速看一下我們還能使用什么:
-  任何 - 允許提供任何附加值。
 
-  記錄器名稱 - 自動填寫有效的記錄器名稱。
 
-  Spring Bean參考 - 自動完成當前項目中的可用bean名稱。
 
-  Spring資料名稱 - 自動完成項目中可用的Spring概要文件名稱。
 
有關更多信息,請參閱附錄B。
結論
這就是我在Spring Boot中關于配置元數據支持的全部內容。 我希望這兩篇文章能激發您對這項功能進行自己的研究并嘗試一下。 老實說,設置起來并不難,它使您的生活更輕松。 盡管這不是解決應用程序配置所有問題的萬能解決方案,但我還是愿意像今天這樣利用增量改進。 您對這種配置方法有何經驗? 讓我知道在評論部分。
翻譯自: https://www.javacodegeeks.com/2016/02/advanced-config-configuration-meta-data-spring-bootstrap.html
總結
以上是生活随笔為你收集整理的Spring Bootstrap中具有配置元数据的高级配置的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: jdk8和hotspot_HotSpot
- 下一篇: 安卓手机拷贝到苹果(安卓手机拷贝)
