<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Apache Tamaya社區(qū)協(xié)作配置標準

          聯(lián)合創(chuàng)作 · 2023-09-30 21:18

          Apache Tamaya是一個孵化項目,旨在提供一個非常強大而靈活的配置解決方案。

          核心要點

          • 配置是一個橫切性的關注點,跨所有的應用類型,但是并沒有Java標準來管理配置;

          • Apache Tamaya是一個孵化項目,旨在提供一個社區(qū)協(xié)作的配置標準;

          • 如果屬性沒有定義的話,將會使用默認屬性;

          • 如果出現(xiàn)沖突的話,會有默認的合理值,但是默認行為可以通過自定義的映射器進行重寫;

          • 支持各種運行時環(huán)境的編程API,比如獨立應用、CDI和Spring等。

          Credit Suisse和Oracle曾試圖為Java EE的配置創(chuàng)建一個宏偉的JSR標準,現(xiàn)在距離這個計劃的破產(chǎn)已經(jīng)過去了兩年的時間。導致這個計劃破產(chǎn)的原因很多,我們在這里的關注點也不是討論它的細節(jié)。需要說明的是,盡管官方的JSR從未被JCP執(zhí)行委員會所批準,但是標準化Java配置的努力卻從未停止過。在本文中,我將會關注后續(xù)的工作以及這個初始項目的當前狀態(tài)。

          配置標準為何如此重要?

          配置是一個通用的橫切性關注點,跨所有的應用類型。屬性通常會以key = value的形式進行指定,這些屬性會以文件的形式來提供并且會加載到一個Java Properties對象中。令人遺憾的是,OSGi、Spring、Java EE、SE以及其他在Java中運行的框架和解決方案都提供了自己的配置API和格式。其中有很多會使用專有的XML格式,另外一些則可能使用更為現(xiàn)代化的格式,比如Yaml。Java EE甚至不支持大多數(shù)場景下的動態(tài)和遠程配置。在應用中,組合使用不同的框架通常都是非常繁瑣的,這要歸因于不同的配置格式、存放位置以及冗余性。這都會增加不必要的復雜性并且易于出現(xiàn)錯誤。它會影響到某個應用內部的代碼編寫,同時還會影響它與周邊系統(tǒng)的集成。在過去的二十年間,Java在很多領域都做出了巨大的貢獻,為各種類型的應用開發(fā)構建了無與倫比的生態(tài)系統(tǒng)。這不免令人覺得有些怪異,在配置管理這樣一個通用關注點上居然缺乏一個標準API,如果能有一個這樣的標準的話,應用程序就不用構建自己的配置方案了,同時也可以簡化與不同利益相關者所提供的模塊進行集成。

          動因與背景

          在如何進行配置以及配置到底該是什么樣子方面,所涉及到的意見差別很大。因此,配置標準不應該關注于配置什么內容或何時進行配置。以此作為驅動力,我們將已有的知識和實驗性代碼轉移到了一個新的孵化項目中,這個項目的名稱叫做Apache Tamaya。我們早期的討論集中在已有的想法和需求上,但最終,我們后退了一步,從頭開始重新定義使用場景,打造了一個嶄新的實現(xiàn)。鑒于配置管理是使用最廣泛的橫切性關注點之一,我們希望和期待這項工作能夠成為某種形式的標準,讓整個Java生態(tài)系統(tǒng)都能從中受益。

          Tamaya的一些特性包括:

          • 定義了一組配置注解(tamaya-inject-api),它們可以添加到客戶端代碼中,從而注入配置的值。注解會按照一種統(tǒng)一的方式來運行,不管你的代碼是作為簡單老式的Java SE方式運行,還是運行在CDI容器或Spring環(huán)境之中。它們甚至還支持OSGi服務。

          • Tamaya所支持的并不局限于String值,可以是任意的Java類型,只要我們所注冊的PropertyConverters能夠從原始的配置值(String類型)衍生出類型化的值就可以,例如將其作為Date或URL。

          • 此外,Apache Tamaya還提供了無數(shù)的擴展和功能集成,這樣的話就能根據(jù)用戶的需求自定義運行時的配置(這樣的話,允許用戶為他們的系統(tǒng)選擇最合適功能,從而解決了配置復雜性所面臨的挑戰(zhàn))。這里很棒的一點在于所有的擴展都不會依賴于核心模塊,除非運行在測試作用域(test scope)中,這個作用域提供了一個功能性的實現(xiàn),用來執(zhí)行我們的測試用例。

          瀏覽 27
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线视频韩国一区 | 求操逼视频| 五月天天 | 手机在线看片av 亚洲成人黄色网址 | 亚洲第一国产 黄AV动漫软件 |