Spring 2.1 中註解驅動的依賴注入
Spring 2.0 引入了註解支援和感知註解的配置選項,Spring 使用者可以使用它們來使用 Java 5(或更高版本)進行開發
@Transactional | 用於劃分和配置事務定義 |
---|---|
@Aspect (AspectJ) | 用於定義切面以及 @Pointcut 定義和建議 (@Before, @After, @Around) |
@Repository | 用於指示作為儲存庫(又名資料存取物件或 DAO)運作的類別 |
@Required | 用於強制要求已註解的 Bean 屬性提供值 |
在 Spring 2.1 中,這種註解驅動的配置主題得到了顯著擴展,並且隨著我們向 RC1 版本邁進,將繼續發展。 實際上,現在可以透過註解來驅動 Spring 的依賴注入。 此外,Spring 可以探索需要在應用程式上下文中配置的 Bean。
這篇部落格文章將作為入門指南,以 10 個易於遵循的步驟介紹基本功能。 我將在本週晚些時候提供有關更多進階功能和自訂選項的資訊。 如果您對其他配置選項感興趣,您還應該查看 Spring Java Configuration 專案和 此部落格。
本教學課程至少需要 Java 5,建議使用 Java 6(否則在步驟 1 結束時只有一個要求)。
步驟 1
取得 spring-framework-2.1-m1-with-dependencies.zip。 解壓縮封存檔後,您將在 'dist' 目錄中找到 spring.jar 和 spring-mock.jar。 將它們以及以下內容新增到您的 CLASSPATH(顯示的路徑相對於解壓縮的 2.1-m1 封存檔的 'lib' 目錄)
- asm/asm-2.2.3.jar
- asm/asm-commons-2.2.3.jar
- aspectj/aspectjweaver.jar
- hsqldb/hsqldb.jar
- jakarta-commons/commons-logging.jar
- log4j/log4j-1.2.14.jar
步驟 2
為範例提供介面和類別。 我已嘗試使其盡可能簡單,但能夠示範主要功能。 我將所有程式碼和配置包含在單個 "blog" 套件中。 我鼓勵您遵循相同的指導方針,以便範例按原樣工作; 否則,請務必進行必要的修改。 首先,是GreetingService 介面
public interface GreetingService {
String greet(String name);
}
然後,是一個簡單的實作
public class GreetingServiceImpl implements GreetingService {
private MessageRepository messageRepository;
public void setMessageRepository(MessageRepository messageRepository) {
this.messageRepository = messageRepository;
}
public String greet(String name) {
Locale locale = Locale.getDefault();
String message = messageRepository.getMessage(locale.getDisplayLanguage());
return message + " " + name;
}
}
由於服務依賴於 MessageRepository,請定義…
Spring LDAP 1.2 RC1 已發布
親愛的 Spring 社群:
我們很高興宣布 Spring LDAP 1.2 的第一個候選版本,其中包含許多功能和錯誤修正。 此處僅列出最重要的部分。 如需完整清單,請參閱 變更日誌。 該版本可在 此處下載。
- 實作 Spring LDAP 的用戶端事務支援。 請參閱參考文件以瞭解更多資訊 (LDAP-29)。
- 變更異常層級結構,使其成為 JNDI NamingException 層級結構的未檢查鏡像 (LDAP-4)。
- Spring LDAP 擲回的異常現在始終是可序列化的,無論封裝的 NamingException 是否可序列化(情況並非總是如此)(LDAP-14)。
- 重寫 LdapEncoder.nameDecode() 以解決國家字元的問題,並移除用於剖析的規則運算式,大幅提升了識別名稱剖析效能,作為額外好處 (LDAP-30)。
- 在內部升級到 Spring 2.0.4。 仍然支援 Spring 1.2.x (LDAP-35, LDAP-51)。
請注意,此版本中進行了許多 API 破壞性變更,主要是套件重組內容。 因此,這不是 Spring LDAP 1.1.2 的直接替換,儘管升級不應花費太多精力。 請參閱提供的升級指南以瞭解詳細資訊。
Spring LDAP 團隊
Spring Framework 2.0.5 已發布
Spring Web Flow Bean 範圍和 JSF
我最近完成了 Spring Web Flow 中的一個有趣問題。 此問題 (SWF-163) 涉及為 Spring Web Flow 的內部範圍新增 Spring 2.0 Bean 範圍支援。 實作實際上並沒有那麼有趣(畢竟 Scope 介面很容易實作),但我想提及如何在您的應用程式中使用類似的東西。
Spring 2.0 範圍
在 Spring 1.x 中,我們有單例和原型 Bean 範圍的概念,但表示法是固定的,並且使用 singleton="[true | false]" 並不是特別具有描述性。 因此,在 Spring 2.0 中,此表示法已從 XSD 樣式的配置中移除,現在您會看到一個更清晰的表示法,即 scope="[singleton | prototype | ...]"。 Spring 本身新增了三個 Bean 範圍; 與 Web 應用程式相關的 request、session 和 globalSession。使用 Spring Web Flow 1.1 的最新快照,我們現在可以看到三個主要 Web Flow 範圍的 Bean 範圍,flash、flow 和 conversation。
<bean id="sale" class="org.springframework.webflow.samples.sellitem.Sale…
Spring Batch
簡介
我一直在與幾個客戶合作開發一個名為 Spring Batch 的新產品。 其目的是提供工具和應用程式來支援企業環境中的大量處理。 Spring Batch 是 Spring Portfolio 的一部分,並在 Spring 2.1 發布系列中進行初始發布。
實際上,建置一些原型程式碼的最初動力來自於許多 Interface21 客戶。 這提供了一些有用的額外細節和對實作的一些約束,以便它可以應用於客戶提出的實際問題。 我希望本文…
強大的組合:SCA、OSGi 和 Spring
不,這不是我的標題,它實際上是 Open SOA collaboration 最近發布的白皮書的標題。
"根據使用者回饋,OSOA Collaboration 正在發布一份白皮書,重點介紹 SCA、Spring 和 OSGi 技術的強大組合,旨在協助開發人員簡化服務的建立和組合,這些服務對於建置基於 SOA 方法的應用程式至關重要。"Open SOA collaboration 開發了服務協作架構 (SCA) 規範,其中 合作夥伴 包括 BEA、IBM、IONA、Oracle、Red Hat、SAP、Siemens、Sun、Tibco 等。 因此,當這個團隊開始團結起來支持 "SCA、Spring 和 OSGi 的強大組合" 時,這對 Spring Framework 以及我們在 Spring OSGi 專案中所做的工作來說是一個極大的認可。
白皮書 簡要概述了 SCA、OSGi 和 Spring,然後描述了如何將它們一起使用。 引述自摘要
"SCA、OSGi 和 Spring 都是 Java 程式設計師使用的有用且強大的工具。 在我們即將進入的以服務為導向的新世界中,一起使用 SCA、OSGi 和 Spring 可以為使用少量 API 從簡單的 Java Bean 集中建置服務實作提供強大的功能,並具有受管理的依賴項、版本控制和動態更新功能,同時能夠將這些實作與使用 Java 或其他語言編寫的其他服務元件組合,並使用一系列通訊方法存在於分散式系統網路中。下週我將與 IBM 的 Mike Edwards 在 JavaOne 會議上共同介紹 SCA 和 Spring:會議 TS-8194,"Spring 和服務元件架構…簡單性、靈活性、可管理性、可測試性、可重用性。 企業開發人員的關鍵組合。"
從 Amazon S3 查詢與下載
在先前的文章中,我描述了我們如何使用自定義 ANT 任務來上傳 Spring Portfolio 中基於 ANT 的專案的每日快照。 在這篇文章中,我將描述我們如何使用 Amazon S3 為每個專案的快照產生頁面,並允許使用者下載快照。
正如我在之前的文章中提到的,S3 主要用作 REST-ful 服務。 這意味著雖然我使用 Java 進行上傳部分,但我可以自由地使用其他語言進行下載部分。 在這種情況下,我選擇使用 PHP,因為它已經在我正在使用的伺服器上可用,而且是……
使用自定義 ANT 任務上傳到 Amazon S3
一個穩固的 CI 結構的一個有趣的副作用是,當事情運行可靠時,新的問題開始出現。 在 Spring 的 CI 系統開始順利運行後不久,我們在 static.springframework.org 上的偶爾的空間和頻寬問題變得更加明顯。 Colin Sampaleanu 之前曾研究過如何緩解其中一些問題,並最終選擇了 Amazon S3。
Amazon S3 是 Amazon Web Services 的一部分,並提供非常便宜的線上檔案儲存服務。 「非常便宜」是什麼意思? 好吧,從網站上看,它似乎……
Spring 的本質
這發生在上週我在亞特蘭大的 Barnes & Noble 書店裡。 我繞到電腦區,開始瀏覽標題。 頭微微傾斜時,我聽到了一段關於工作的對話。 我沒有主動傾聽,但我知道一方在推銷工作,而另一方在詢問。
幾分鐘後,只剩下我和那個在找人才的人。 我確信他會開始說話。 很快他就說「所以你在做 J2EE?」於是對話開始了。 他問我關於我的工作。 他不知道 Interface21,但在聽到它是公司……