日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

muy bien_配置Java EE应用程序或“将Bien付诸实践”

發(fā)布時間:2023/12/3 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 muy bien_配置Java EE应用程序或“将Bien付诸实践” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

muy bien

過去,有關應用程序配置的討論很多。 我不知道誰拉開了辯論的序幕,但是最基礎的閱讀(著眼于未來的Java EE 7及更高版本)是Antonio Goncalves的帖子[辯論] – Java EE 7中的配置又如何呢 ? 事實是,使用Vanilla Java EE,我們每天都在進行應用程序配置。 沒有適當的機制。 看完昨天亞當的最新帖子后,我想對它做些補充,我認為它可以適合大多數項目。

為什么發(fā)布這個帖子?

亞當展示的基本知識非常聰明。 你只是

@Inject int yourConfigVariable;

到此為止。 您不必關心屬性或其他配置類。 但是查看它,您發(fā)現您需要以某種方式從某個地方填充您的配置。 回顧安東尼奧的帖子,您會發(fā)現您有很多選擇。 我們最滿意的一種可能是Java的Properties機制。 結合使用此代碼和Adam提供的代碼,您最終將獲得Configuration.properties,其中包含無數個單詞鍵列表。 那不是我所說的可維護的。 所以基本上,這就是為什么該帖子的標題是:“將Bien付諸實踐” ..oO(對不起,亞當!):-)這是我解決該問題的方法。

從屬性文件填充您的配置

最基本的部分是將Configuration.properties文件添加到您的應用程序(默認程序包)。 現在,我們將對配置持有人進行一些修改,使其成為屬性類型。 現在,修改Adam的fetchConfiguration()方法以加載它。

private Properties configData;@PostConstructpublic void fetchConfiguration() {String fileName = "Configuration.properties";configData =loadPropertiesFromClasspath(fileName); }/*** Load properties file from classpath with Java 7 :-)* @param fileName* @return properties*/public static Properties loadPropertiesFromClasspath(String fileName) {try (InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName)) {if (in != null) {props = new Properties();props.load(in);}} catch (IOException ioe) {log.debug("Can't load properties.", ioe);}

現在,您必須相應地修改@Producer方法。 我只在這里顯示getString()方法來向您展示概念:

/*** Get a String property* @param point* @return String*/ @Produces public String getString(InjectionPoint point) {String propertyPath = point.getMember().getDeclaringClass().getName()+ ".";String propertyName = point.getMember().getName();String propertyValue = configData.getProperty(propertyPath+propertyName);return (propertyValue == null) ? "" : propertyValue;}

為了方便起見,我將聲明類的名稱添加為propertyPath,以使屬性文件中的順序更加明確。 您可以使用Adam所示的生產方法:

package net.eisele.configuration; public class HitsFlushTimer {@Injectprivate String hitsFlushRate;}

在這種情況下,您最終使用Configuration.properties文件中的鍵net.eisele.configuration.HitsFlushTimer.hitsFlushRate訪問屬性。 快速警告。 如果您遇到這種情況,則必須在耳朵內打包單獨的ejb和war模塊,您可能需要在Configuration單例中使用javax.annotation.security.PermitAll注釋。

然后,您最終會重復很多

可能是真的。 如果重新配置相同的配置(例如,httpProxy),這將強制您為屬性文件中的不同鍵使用相同的值。 解決方案似乎很簡單。 為此,我們需要自己的資格賽。 我們走吧:

@Retention(RUNTIME) @Target({FIELD, METHOD}) @Qualifier public @interface AppProperty {@Nonbindingpublic String value(); }

現在我們有自己的資格賽。 接下來是相應地更改@Producer:

@Produces @AppProperty("")public String getString(InjectionPoint point) {String property = point.getAnnotated().getAnnotation(AppProperty.class).value();String valueForFieldName = configData.getProperty(property);return (valueForFieldName == null) ? "" : valueForFieldName; }

而已。 現在,您可以在任何地方使用類似的內容:

@Inject@AppProperty("net.eisele.configuration.test2")String test2;

我知道,這還不如亞當的@Inject注解那么優(yōu)雅。 但是:您不必花很多時間就可以看到正在發(fā)生的事情以及您的價值來自何處。 我認為這是一個有多個開發(fā)人員的項目中的專業(yè)人士。

是的 仍然不是很可維護。

好。 我知道。 您仍在談論重構屬性名稱。 對? 還剩下什么呢? 您可以考慮使用封裝了所有屬性鍵的CKey枚舉,并使用它而不是簡單地使用鍵本身。 但是,我寧愿在代碼中簡單地使用普通的String鍵。 現在配置愉快。 您如何配置應用程序? 讓我知道! 很高興收到評論:)

參考:在Java軟件企業(yè)軟件開發(fā)博客上, 配置 JEE合作伙伴 Markus Eisele的Java EE應用程序或“將Bien付諸實踐” 。

相關文章 :

  • 從Spring到Java EE 6
  • Java EE中的配置管理
  • Java EE過去,現在和云7
  • Java EE6事件:JMS的輕量級替代品
  • Java EE6裝飾器:在注入時裝飾類

翻譯自: https://www.javacodegeeks.com/2011/12/configure-java-ee-applications-or.html

muy bien

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的muy bien_配置Java EE应用程序或“将Bien付诸实践”的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。