Spring 2.1 中註解驅動的依賴注入
Spring 2.0 引入了註解支援和註解感知配置選項,可供使用 Java 5(或更高版本)的 Spring 使用者利用
| @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 作用域;request、session 和 globalSession,它們與 Web 應用程式相關。透過 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
不,這不是我的標題,它實際上是 開放 SOA 協作組織 最近釋出的一份白皮書的標題。引用白皮書隨附的新聞公告:
“根據使用者反饋,OSOA 協作組織正在釋出一份白皮書,重點介紹 SCA、Spring 和 OSGi 技術的強大組合,旨在幫助開發人員簡化服務的建立和組合,這對於構建基於 SOA 方法的應用程式至關重要。”開放 SOA 協作組織開發服務協作架構(SCA)規範,其合作伙伴包括 BEA、IBM、IONA、Oracle、Red Hat、SAP、Siemens、Sun、Tibco 等。因此,當這個團體開始圍繞“SCA、Spring 和 OSGi 的強大組合”凝聚時,這是對 Spring 框架以及我們在 Spring OSGi 專案中所做工作的巨大認可。
這篇白皮書簡要概述了 SCA、OSGi 和 Spring,然後描述了它們如何協同使用。引用摘要:
“SCA、OSGi 和 Spring 都是 Java 程式設計師可使用的有用且強大的工具。在我們正在進入的新的面向服務世界中,將 SCA、OSGi 和 Spring 結合使用,為使用少量 API、具有託管依賴項、版本控制和動態更新功能的簡單 Java Bean 集構建服務實現提供了強大的功能,並能夠將這些實現與其他用 Java 或其他語言編寫並存在於使用各種通訊方法的分散式系統網路中的服務元件進行組合。下週在JavaOne會議上,我將與IBM的Mike Edwards一起聯合演示SCA和Spring:會議TS-8194,“Spring和Service Component Architecture…”簡單性、靈活性、可管理性、可測試性、可重用性。這是企業開發人員的關鍵組合。”
從 Amazon S3 查詢和下載
在上一篇文章中,我描述了我們如何使用自定義 ANT 任務從 Spring 產品組合中基於 ANT 的專案上傳每日快照。在這篇文章中,我將描述我們如何使用 Amazon S3 為每個專案的快照生成頁面並允許使用者下載快照。
正如我在上一篇文章中提到的,S3主要用作RESTful服務。這意味著雖然我在上傳部分使用了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,但聽到它是公司…

