Spring Data Graph - Neo4j 支援 1.0.0.M2 釋出

釋出 | Thomas Risberg | 2011 年 2 月 1 日 | ...

親愛的 Spring 社群,

很高興宣佈支援 Neo4j 的 Spring Data Graph 1.0 專案的第二個里程碑版本現已釋出!Spring Data 專案的主要目標是使構建使用非關係型資料庫、Map-Reduce 框架和基於雲的資料服務等新資料訪問技術的 Spring 應用變得更加容易。Graph Neo4j 模組提供了與 Neo4j 圖形資料庫的整合。

下載 | JavaDocs | 參考文件 | 更新日誌

要了解更多關於該專案的資訊,請訪問Spring Neo4j 主頁

其中的功能包括…

SpringSource Tool Suite 2.6.0.M1 釋出

釋出 | Christian Dupuis | 2011 年 1 月 28 日 | ...

親愛的 Spring 社群,

很高興宣佈我們剛剛釋出了下一個 SpringSource Tool Suite (STS) 版本的第一個里程碑構建版本。

此里程碑構建版本的一些亮點

  • @Autowired 和 @Qualifer 的內容輔助和快速修復
  • @RequestMapping 中用於路徑變數的內容輔助
  • 更新的 Spring 專案嚮導
  • 來自 ITD 的 RequestMappings 現在在 Spring Explorer 和 RequestMapping-View 中可用
  • 改進的 Groovy 內容輔助效能
  • 改進的 Groovy 語法高亮
有關新功能和錯誤修復的更多詳細資訊,請參閱 2.6.0.M1 新特性和注意事項文件。詳細的安裝說明也已提供。

一如既往,可從 STS 下載頁面獲取下載,請檢視“其他下載”。

Green Beans: 企業訊息傳遞和 Spring 入門

工程 | Josh Long | 2011 年 1 月 26 日 | ...

在這篇文章中,我們將介紹訊息傳遞的核心概念,以及 Spring 框架及其姊妹專案為各種型別的訊息傳遞提供的豐富支援。

什麼是訊息傳遞?為了更好地解釋這一點,我將轉述 Gregor Hohpe 和 Bobby Woolf 合著的開創性著作 Enterprise Integration Patterns (Addison Wesley, 2004) 中提供的示例。當你打電話時,你試圖將資訊傳遞給另一方。這隻有在對方在你打電話時可用才有效。由於無法始終接聽電話,我們使用語音信箱來排隊訊息。來電者在語音信箱中留言,然後被呼叫者可以稍後隨時檢索訊息(甚至許多訊息),這是非同步的。

在該示例中,語音信箱位於雙方中間。它儲存訊息,並在被呼叫者(即接收者)檢索時傳遞訊息。在企業訊息傳遞世界中,情況非常相似:一方將訊息傳送到訊息代理(也稱為面向訊息的中介軟體 – MOM),另一方(在其方便時)接收或顯式查詢訊息代理中的任何訊息。

這裡的類比不再適用。與語音信箱不同,訊息代理有很多選項。訊息代理非常適合提供額外的服務,例如路由,並提供訊息傳遞保證。訊息代理可以針對不同的用例進行最佳化,例如,你可以用速度換取永續性。訊息代理可以將訊息持久化到外部儲存以確保永續性,儘管這通常是為了速度而可以切換的配置。

在語音信箱示例中,訊息由一方傳送並傳遞給另一方——這種通訊是點對點的。訊息代理支援這種方式,也支援另一種稱為釋出-訂閱的通訊型別,其中訊息被傳遞給多個客戶端。

訊息代理的一個常見用途是解決兩個不同系統之間的整合問題。傳送到訊息代理的資料通常是傳送者和接收者都通用的格式。兩個系統要使用訊息代理唯一需要達成一致的是資料契約。訊息通常有一個訊息體,其中儲存訊息本身的內容,以及訊息頭,訊息頭是關於訊息體的元資料,可以幫助訊息消費者處理訊息。訊息頭可以是任何內容,但通常與訊息本身或訊息處理器相關。

Java 訊息服務

Java 訊息服務 (JMS) API 規定了與訊息代理互動的客戶端介面。每個訊息代理提供自己的 API 實現,就像 JDBC 驅動程式為 JDBC API 所做的那樣。這意味著 JMS 客戶端通常應該使用與伺服器相同版本的客戶端。有許多優秀的 JMS 代理實現可供選擇。其中一個原因是訊息傳遞一直是應用程式開發的重要組成部分,如今更是如此。自 1.1 版本以來,JMS 一直是 J2EE(現為 Java EE)規範的一部分。在過去十年中的大部分時間裡,JMS 規範一直處於 1.1 版本。

在 JMS 中,客戶端使用 javax.jms.ConnectionFactory 建立 javax.jms.Connection。然後可以使用 Connection 建立 javax.jms.SessionSession 表示客戶端與代理的互動,並允許傳送和接收訊息以及其他不太明顯的操作。

介面上最有用的方法是關於建立訊息生產者和訊息消費者,它們負責向或從 javax.jms.Destination 傳送和接收訊息。Destination 映射了 JMS 中訊息代理上“地址”的概念。它也映射了代理儲存訊息的位置的概念。在 JMS 中,訊息傳送到、儲存在和消費自同一個地方,所有這些都由 javax.jms.Destination 例項表示。

[caption id="attachment_7506" align="alignnone" width="573" caption="上圖中的藍色元素代表生產者和消費者。橙色元素代表代理中用於緩衝訊息的目標地址。在 JMS 中,這些是主題 (topics) 或佇列 (queues)。"][/caption]

Destination 是一個介面,它有兩個更具體的子介面:javax.jms.Queuejavax.jms.Topic.Queue 代表一個標準佇列,它是前面描述的點對點結構。Topic 提供釋出-訂閱訊息傳遞,並且可以將單個訊息傳遞給多個接收者。

要向 Destination 傳送訊息,必須建立 javax.jms.MessageProducer。然後可以使用 MessageProducer 傳送 javax.jms.Message

JMS 支援兩種不同的接收訊息機制。第一種方式是請求訊息,使用 javax.jmx.MessageConsumer#receive() 方法,該方法以同步方式從 Destination 返回單個訊息;預設情況下,該方法會阻塞直到接收到訊息。客戶端也可以不使用 MessageConsumer,而是透過呼叫 javax.jms.Session#setMessageListener(MessageListener) 安裝 javax.jms.MessageListenerMessageListener 是一個介面,只有一個方法 public void onMessage(javax.jms.Message),當 javax.jms.MessageDestination 上可供消費時,該方法將被呼叫。MessageListener 提供非同步訊息處理:訊息到達時,即被處理。

JMS API 中還有很多東西可以學習,但這些類和概念將最有助於我們討論 Spring 對 JMS 訊息傳遞的支援。第一層支援是 org.springframework.jms.core.JmsTemplate,它提供了簡化方法,將我們剛才討論的內容簡化為一行程式碼。JmsTemplate 工作時需要一個 javax.jms.ConnectionFactory 例項。JmsTemplate 可以為你做很多工作。例如,要傳送訊息,JmsTemplate 會建立一個 javax.jms.Session,設定一個 javax.jms.MessageConsumerjavax.jms.MessageProducer,設定所有事務機制,併為你提供當前 javax.jms.Session 的引用,以便你可以建立所需的訊息併發送它。有了所有的錯誤處理和構建邏輯,這很容易節省數十行程式碼。一旦訊息傳送出去,它會銷燬或關閉大部分這些物件。這在應用程式伺服器(如 Java EE 伺服器)中是標準做法,因為 ConnectionFactory 例項是由伺服器建立、管理和池化的。它們在使用後會快取例項。在這些環境中關閉資源只是將它們返回到池中。因此,在標準情況下,假設 ConnectionFactory 快取或池化例項,JmsTemplate 會做正確的事情。

在像應用程式伺服器這樣的託管環境中,你通常需要從 JNDI 獲取 javax.jms.ConnectionFactory。你可以使用 Spring 來查詢該引用並配置 JmsTemplate。在我們的示例中,我們希望操作更靈活,因此我們將使用獨立的 ActiveMQ 訊息代理。ActiveMQ 是一個流行的開源訊息代理。要使用它,請下載它,然後在 bin 資料夾中執行適用於你作業系統的啟動指令碼。在你的應用程式中,你需要客戶端庫來連線相應版本的 ActiveMQ。在撰寫本文時,ActiveMQ 的最新版本是 5.4.2。如果你使用 Maven,請將以下依賴項新增到你的 Maven pom 檔案中



            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-core</artifactId>
                <version>${activemq.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-optional</artifactId>
                <version>${activemq.version}</version>
            </dependency>

請確保為 ${activemq.version} 建立一個 Maven 屬性,或者手動將字串替換為相應的版本。還有一個 activemq-all 依賴項,但它會下載很多可能不需要的 jar 包。對於我們的應用程式,上述兩個依賴項就足夠了。

Spring 與 JMS 的結合使用

讓我們檢查一個基本的 JMS 應用程式的配置。首先,讓我們檢查基本的 Spring XML 配置



<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/200…

SpringOne 2GX 2010 技術講座:Spring Integration 2.0 的新特性?

新聞 | Adam Fitzgerald | 2011 年 1 月 21 日 | ...

SpringOne 2GX 2010 Tech Talk: What's new in Spring Integration 2.0
InfoQ 釋出了另一場來自 SpringOne 2GX 2010 的講座。這次是由 Mark FisherOleg Zhurakousky 主講 Spring Integration 2.0 的新特性

Mark 和 Oleg 使用以程式碼為中心的演示來描述 Spring 3.0 功能如何整合到 Spring Integration 中,實現了哪些企業整合模式,以及哪些通道介面卡和閘道器已更新。他們演示了新的 STS 工具對 Spring Integration 的支援,並討論了該專案的一些未來特性和方向。

這個演示是瞭解 Spring Integration 2.0 的絕佳方式。2.0 的 GA 版本在此講座後不到一個月釋出,因此涵蓋的所有主題都與當前版本同步。再次非常感謝 InfoQ 對 SpringOne 2GX 2010 的報道

本週 Spring:2011 年 1 月 18 日

工程 | Josh Long | 2011 年 1 月 18 日 | ...

Spring 社群又度過了精彩的一週。除了 Tomcat 7 穩定版本釋出的激動人心的公告外,社群還發布了許多精彩的帖子。

  1. 繼續“Green Beans”基礎系列,我們剛剛釋出了一篇關於 一起使用 Spring 和 Maven 的文章。
  2. Tomcat Expert 社群宣佈了 Tomcat 7 的第一個穩定構建版本。我們知道 Tomcat 是 Spring 開發者執行應用程式最喜歡的地方,所以務必檢視最新功能。
  3. Nicholas Sankel 寫了一篇關於將 Spring Roo 與 Vaadin UI 框架結合使用的部落格。
  4. Tomcat Expert 社群提供了 2010 年的十大文章列表
  5. Tomasz Nurkiewicz 寫了一篇精彩的部落格,探討了如何完全不使用 XML 來使用 Spring 框架
  6. Sivaprasadreddy Katamreddy 撰寫了 Spring AOP 入門,從有問題程式碼一直到使用 Spring AOP 改進的程式碼。
  7. 一位名叫 Warlock(據我所知)的先生在他的部落格 上介紹了 Spring MVC 基於註解的會話處理支援
  8. Sal Peace 撰寫了一篇精彩的入門文章,介紹瞭如何將 Spring MVC 3.0 的 Portlet 支援與 WebSphere 7 結合使用
  9. Viral Patel 寫了一篇關於在 Spring 3 MVC 和 Hibernate 中儲存和檢索 BLOB 物件資料的教程。
  10. Jorram Barrez(來自 Activiti 專案)釋出了一篇關於如何使用 Spring 將 Activiti BPMN 2.0 業務流程連線到 EJB 業務服務的文章。

Green Beans: Maven 和 Spring 入門

工程 | Josh Long | 2011 年 1 月 17 日 | ...

Apache Maven 是一種流行的開源工具,它提供了一種約定優於配置的專案構建管理方法。事實上,Eclipse 社群調查顯示 Maven 的採用率從 2009 年的 8% 增加到 2010 年的 28%,突顯了其在各種專案設定中的實用性。儘管你可以在不使用 Maven 的情況下使用 Spring,但仍有很多理由推薦 Spring 開發者使用它。在這篇文章中,我將向你展示如何開始使用 Maven,以及如何將其與 Spring 庫、倉庫以及像 SpringSource Tool SuiteSpring Roo 這樣的工具成功結合使用。

Maven 處理專案構建。如果你的專案遵循 Maven 的約定,Maven 可以相對容易地提供強大的功能和複雜性。它是宣告性的;你描述的是你想要完成什麼,而不是你想要如何完成。如果你來自像 Make 或 Ant 這樣的老牌構建工具,這種方法會顯得不同。

你在 Maven 專案配置中宣告專案的依賴項。然後 Maven 會代表你解析並下載這些依賴項。這類似於許多不同作業系統中的軟體包系統。假設你正在使用 OS X 的 finkports 命令列工具。要更新作業系統的某個功能,使用者在管理客戶端中選擇一個軟體包(例如,最新的安全補丁,或新版本的 glib 庫)進行安裝,然後指示客戶端從已知伺服器(稱為軟體包倉庫)下載並安裝。軟體包下載後,軟體包管理器會查閱該軟體包的清單,其中列出了該軟體包依賴的所有庫(在其他軟體包中找到)——即它的傳遞依賴。這些也會被下載。

如果你尚未安裝 Maven,有幾種方法可以安裝它。從 Apache 網站下載。選擇較新的版本。目前,許多人正在使用 Maven 2.21 或最近釋出的 Maven 3。下載你想要使用的版本,然後將其解壓到你選擇的目錄。或者,一些作業系統在其軟體包系統中提供了 Maven 2 構建版本(以及很快將提供的 Maven 3 構建版本)。例如,在 Ubuntu 上,你可以執行 sudo apt-get install maven2 。如果你正在使用 SpringSource Tool Suite(可在此免費下載),那麼你無需擔心,Maven 已經下載幷包含在你的 STS 安裝資料夾中。無論你如何在系統上獲取 Maven 二進位制檔案,請確保該二進位制檔案在你的作業系統的搜尋路徑中。通常,這隻需要將 Maven 安裝目錄的 bin 資料夾新增到作業系統的 PATH 變數即可。為 Maven 安裝本身建立一個名為 MAVEN_HOME 的系統變數也是一個好習慣。在 Unix(包括 OS X)或 Linux 機器上,這個設定看起來大致相同。在我的機器(一臺 Ubuntu Linux 機器)上,它看起來像這樣

export MAVEN_HOME=/home/jlong/bin/springsource/maven-2.2.1.RELEASE 
export PATH=$PATH:$MAVEN_HOME/bin

要測試它,開啟一個新的 shell 並執行以下命令

mvn --version

你應該會看到一些輸出,確認該命令在你的系統上存在,如下所示

jlong@jlong-mbp:~/Desktop/code$ mvn --version 
Apache Maven 2.2.1 (r801777; 2009-08-06 12:16:01-0700) 
Java version: 1.6.0_22 
Java home: /usr/lib/jvm/java-6-sun-1.6.0.22/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux" version: "2.6.35-22-generic" arch: "amd64" Family: "unix" 
jlong@jlong-mbp:~/Desktop/code$ 

Maven 入門

Maven 專案假定一個標準的目錄結構,其最小結構如下所示

./pom.xml ./src ./src/main ./src/main/java ./src/main/resources ./src/test ./src/test/java ./src/test/resources

在目錄結構的根部是一個 Maven 所期望的 XML 檔案(總是命名為 pom.xml)。pom.xml(POM 是 Project Object Model 的縮寫)描述了你的專案特有的、無法自動推斷的內容,如依賴項、專案名稱等。

目錄 描述 目錄內容(相對於專案根目錄)
src/main/java 包含專案的 Java 原始碼
src/main/resources 包含專案的所有類路徑相關資源(例如,Spring 應用程式上下文 .xml 檔案)
src/test/java 包含測試的 Java 原始碼…

Spring Roo 1.1.1 的新特性

工程 | Ben Alex | 2011 年 1 月 11 日 | ...

我們很高興宣佈 Spring Roo 1.1.1 正式釋出。這個新版本包含了 超過 250 項修復和增強,其中包括許多效能和功能改進。

一如既往,SpringSource Tool Suite (STS) 2.5.2 將很快釋出並整合此新版本的 Spring Roo。你也可以下載 Spring Roo 1.1.1 的獨立版本並立即開始使用。

讓我們簡要瀏覽一下我們在 Roo 1.1.1 中新增的一些更值得注意的增強功能。如果你正在升級基於 Roo 的專案,我們建議你查閱我們在參考指南中包含的特定版本升級注意事項。參考指南也包含在…

Spring Web Services 2.0 釋出

工程 | Arjen Poutsma | 2011 年 1 月 11 日 | ...

經過近一年的開發,我很高興宣佈 Spring Web Services 2.0 已釋出!在這篇文章中,我想介紹一些主要的新功能。

需要 Java 5+ 和 Spring 3.0

您可能知道,我們將物件 XML 對映 (OXM) 模組從 Spring-WS 專案移至 Spring 3.0。因此,由於 org.springframework.oxm 包中存在衝突的類,將 Spring-WS 1.5(及其自己的 OXM 模組)與 Spring 3.0 一起使用有點問題。

從 2.0 版本開始,我們不再將 OXM 模組作為 Spring-WS 的一部分發布,而是依賴於 Spring 的 OXM。因此,Spring Web Services 2.0 需要 Spring 3.0 才能工作。通常,我們在版本要求方面會更寬鬆一些,不一定要求最新的 Spring 版本,但這是…

SpringSource Tool Suite 2.5.2 釋出

釋出 | Christian Dupuis | 2011 年 1 月 11 日 | ...

親愛的 Spring 社群

很高興宣佈我們剛剛釋出了 SpringSource Tool Suite (STS) 2.5.2.RELEASE。

新版本的一些亮點

  • 支援 Spring Roo 1.1.1.RELEASE
  • 輕鬆建立新的 tc Server 例項
  • 改進的圖形化 Spring Web Flow 編輯器
  • 基於代理的過載(實驗性)
  • 對 Spring 和 Groovy/Grails 工具的大量改進
  • 整合 Spring User Agent Analysis (UAA)

有關新功能和錯誤修復的更多詳細資訊,請參閱新特性和注意事項文件。詳細的安裝說明也已提供。

一如既往,可從 STS 下載頁面獲取下載。如果您有任何問題或疑問,歡迎訪問社群支援論壇

Green Beans: Spring 在服務層入門

工程 | Josh Long | 2011 年 1 月 8 日 | ...

所有應用程式都源於領域模型。“領域模型”這個術語描述了系統中對你嘗試解決的問題很重要的名詞或資料。服務層——業務邏輯所在的地方——操作應用程式資料,並且最終必須將其持久化(通常在資料庫中)。解釋很簡單,但在實踐中,構建一個好的服務層對任何開發者來說都是一項艱鉅的任務。本文將向開發者介紹 Spring 框架中可用於構建更好服務層的選項。假定讀者對……有一定的經驗

訂閱 Spring 時事通訊

透過 Spring 時事通訊保持聯絡

訂閱

搶先一步

VMware 提供培訓和認證,助你加速前進。

瞭解更多

獲取支援

Tanzu Spring 透過一個簡單的訂閱提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視全部