希望在那裡見到你。
歡迎來到 Interface21 團隊部落格
隨著 Interface21 作為一家全球公司不斷發展,每天對我來說越來越清楚的是
我們真的有一些非常有才華、高度積極的領導者,他們在商業和技術方面都有很多話要說。話雖如此,我們想做的事情之一是為我們的員工提供一個方便、易於訪問的管道,以分享他們的見解、經驗、想法和創新。經過幕後的一點努力,我想我們已經做到了。歡迎來到 Interface21 團隊部落格。
在這裡,您將深入了解 i21 的發展情況,從我們正在做的事情、我們正在解決的問題、我們將要去的地方以及我們一路上學到的東西。您會看到很多多樣性,因為我們的公司正在做很多事情,從領導Spring Framework和 Spring 系列產品的開發,到擴大在五個主要國際市場的業務。
整個部落格都可以透過RSS訂閱。此外,您可以通過訂閱來關注您的最愛…
Spring 2.0 RC2 發布
親愛的 Spring 社群:
我們很高興地宣布 Spring 2.0 RC2 已經發布。 下載 | 文件 | 變更日誌
這是 Spring 2.0 最終版本之前的第二個候選版本。它引入了許多錯誤修復和小改進,尤其是在 AOP 框架和 JPA 支援中。請參閱變更日誌以了解詳細資訊。即將發布的 2.0 RC3 版本將解決許多其他已知問題;請參閱我們的 JIRA 路線圖以了解詳細資訊。
請嘗試在您的應用程式中使用此版本,並告知我們您可能遇到的任何問題!重要的是要強調,Spring 2.0 提供了與 Spring 1.x 系列的回溯相容性。 Spring 2.0 也繼續支援 JDK 1.3+ 和 J2EE 1.3+(即使是 J2EE 1.2+,除了 JSP 標籤和 EJB 支援)。相容性對我們的使用者群至關重要,我們致力於提供它。因此,我們也對了解任何此類平台上的潛在相容性問題感興趣。
感謝您在發布此版本之前提供的所有回饋。 我們期待在即將到來的 2.0 GA 發布日期之前獲得更多相同的回饋!
享受,
Juergen HoellerSpring 2.0 產品開發負責人
Spring Web Flow 1.0 RC3 發布

親愛的 Spring 社群:
我們很高興地宣布Spring Web Flow (SWF) 1.0 RC3(候選版本 3)已發布。 下載 | 文件 | 變更日誌
這個穩定版本包含錯誤修復和小改進。 目前,我們預計這是 Spring Web Flow 1.0 最終版本之前的最後一個候選版本,該版本即將推出。 值得注意的是...
值得注意的改進
改進的流程異常層級結構。 總體而言,異常層級結構現在更清楚地組織了從流程定義訪問 (FlowLocatorException) 到運行時流程執行 (FlowExecutionException) 和執行持久性 (FlowExecutionRepositoryException) 的失敗類別。
改進了在 Portlet 環境中使用 BACK 按鈕的支援。 結合基於延續的儲存庫,SWF 支援在流程保持活動狀態時,在 Portlet 環境中完全使用瀏覽器導航按鈕(後退、刷新)。 當流程執行終止時,瀏覽器刷新將觸發自動啟動新的執行。
更簡單的預設 JSF 檢視對應。 現在,預設情況下,SWF 檢視名稱預期與 JSF 檢視 ID 完全對應。您會在 sellitem-jsf 範例中看到此預設值,請注意檢視是如何像標準 JSF 導航處理程式一樣引用 "/priceAndItemCountForm.jsp" 的。 這允許自然支援其他 JSF 檢視技術(如 Facelets),並且對於 JSF 開發人員來說更自然。 如果您需要自訂的 SWF 到 JSF 檢視對應,請將自訂的 ViewIdMapper 插入您的 FlowPhaseListener 中。
範例應用程式簡化。 我們簡化了 fileupload、flowlauncher、birthdate 和 sellitem 範例,以利用 Spring Web Flow 的最新功能和最佳實踐。
潛在的用戶影響變更
在 1.0 RC3 中,在通往 1.0 最終版本的過程中,有一些潛在的用戶影響變更。 以下部分記錄了它們
為簡單起見,刪除了 FormAction 屬性 "validateUsingValidatorMethod"。 經驗表明,此屬性是新用戶感到困惑的根源。 作為更好的替代方案,要在不進行驗證的情況下執行資料繫結操作,只需從流程定義中調用 "bind" 動作方法。 當您需要逐步進行驗證器驗證時,只需調用 "bindAndValidate" 或 "validate",並將 "validatorMethod" 屬性設置為特定的驗證器方法。 有關範例,請參閱 sellitem。
StateExceptionHandler 已重命名為 "FlowExecutionExceptionHandler"。這會影響自訂處理程式實作。 要升級,只需實作新的介面;簽名在邏輯上是相同的。
FlowExecutorImpl 的 "redirectOnPause" 屬性現在接受布林值,而不是 RedirectType 列舉。 從 1.0 RC2 開始,SWF 中只有一種重新導向類型 - 流程執行重新導向。 每次流程執行透過進入檢視狀態而暫停時,將此標誌設定為 'true' 會觸發它。 有關範例,請參閱 Numberguess 或 sellitem。
--------
開始使用 Spring Web Flow 的最佳方法之一是查看和演練範例應用程式。 我們建議您從頭開始查看所有範例,並根據需要補充參考手冊資料。10 個範例應用程式隨 1.0 RC3 版本一起發布,每個範例都展示了一組不同的產品功能。 這些範例是
1. Phonebook - 展示大多數功能的原始範例(包括子流程)
2. Sellitem - 展示具有條件轉換、流程執行重新導向、對話範圍和延續的嚮導
3. Flowlauncher - 展示啟動和恢復流程的所有可能方式
4. Itemlist - 展示 REST 風格的 URL 和內聯流程
5. Shippingrate - 展示 Spring Web Flow 與 Ajax 技術結合使用(感謝 Steven Devijver)
6. NumberGuess - 展示有狀態的 bean 和“單鍵”流程執行重新導向。
7. Birthdate - 展示 Struts 整合
8. Fileupload - 展示多部分檔案上傳
9. Phonebook-Portlet - Portlet 環境中的電話簿範例
(請注意流程定義沒有更改)
10. Sellitem-JSF - JSF 環境中的 sellitem 範例
享受!
Spring Web Flow 團隊
Keith DonaldErwin Vervaet
Juergen Hoeller
Colin Sampaleanu
Rob Harrop
Spring 2.0 RC1 發布
親愛的 Spring 社群:
我們很高興地宣布 Spring 2.0 RC1 已經發布。 下載 | 文件 | 變更日誌
這是 Spring 2.0 的第一個候選版本,在過去六個月中發布了五個里程碑版本之後。這個穩定版本正在等待廣泛的用戶回饋,以便在 7 月初發布 2.0 最終版本。
Spring 2.0 的主要新主題是
- 簡化的配置 - 您會發現總體上編寫的程式碼要少得多,可以配置您的應用程式。 您編寫的程式碼是高層次的、特定於網域的,受益於智慧的預設值以及豐富的驗證和工具支援。
- 強大的 AOP 統一 - 您可以使用 AspectJ 簡潔地套用在物件之前、之後和周圍編織自訂行為的切面,同時仍然受益於 Spring AOP 運行時的簡單性。
- JSR 220 Java Persistence Archtecture (JPA) - 為您提供持久性提供者實作的選擇。 Spring 是第一個在 JEE 和 JSE 環境中支援 JPA 的產品,並且在這兩者之間具有完全的可移植性。
- 異步 JMS 消息傳遞 - 消息驅動的 POJO 為您帶來了輕量級的異步元件,適用於具有 JMS 提供者選擇的 JSE 環境。
- JSR-168 Portlets - Spring Portlet MVC 提供了一個用於開發 JSR 168 portlet 的框架,其中包括與 Spring Web Flow 的整合,用於協調用戶互動。
重要的是要強調,Spring 2.0 提供了與 Spring 1.x 系列的回溯相容性。 相容性對我們的使用者群至關重要,我們致力於提供它。
每個領域的更多主要新功能包括...
- 基於 XML 綱要的 Bean 定義,帶有現成的 XML 命名空間,用於簡化常見的配置任務
- 支援應用程式內容中的擴展 Bean 作用域,其中 Web 請求和會話作用域是主要目標
- Bean 定義增強功能:bean 類別的延遲載入、集合合併和智慧型錯誤訊息
- 基於 XML Schema 命名空間的簡化 AOP 組態
- 支援 AspectJ 切入點表達式語言和 @AspectJ 風格的切面
- 支援在任何物件上進行依賴注入,包括細粒度的領域物件 (基於 AspectJ)
- 增強的 JDBC 支援:具名 SQL 參數、基於泛型的 SimpleJdbcTemplate
- 明確支援 Hibernate 3.1 和 3.2 (同時保持與 Hibernate 3.0 的相容性)
- 支援 Java Persistence API (JPA),包括完整的容器契約與類別植入
- TaskExecutor 抽象,用於提交非同步工作
- 支援各種執行緒池,例如 Java 5 ThreadPoolExecutor 和 CommonJ WorkManager
- 基於訊息監聽器容器的非同步 JMS 支援 ("Message-Driven POJO")
- 基於慣例的 Web MVC:控制器對應、模型屬性名稱
- JSP 表單標籤庫,用於 Spring Web MVC 和 Spring Web Flow
- 完整支援 Portlet 環境,包括基於 DispatcherPortlet 的 Portlet 風格 MVC
... 以及許多其他細節方面的改進。
要查看這些功能的實際應用,請查看發布版本中包含的 JPetstore 參考應用程式,位於 samples/jpetstore 目錄中。 有關更多詳細資訊,請參閱參考文檔的 2.0 版的新功能? 一節。
我們將與 Maven2 社群合作,在未來幾天內將 2.0 RC1 上傳到 Maven 倉庫。
感謝 Spring 社群提供的所有回饋,促成了此次發布。 我們期待您對 2.0 GA 正式版的意見回饋!
祝您使用愉快,
Juergen Hoeller
Spring 2.0 產品開發負責人
Spring Web Services 1.0 M1 已發布
親愛的 Spring 社群:
我很高興地宣布 Spring Web Services 1.0 M1 已發布。 下載 | 文檔 | 變更日誌
此版本是 Spring-WS 的第一個里程碑:Spring 社群專注於建立文檔驅動的 Web 服務的產品。
Spring-WS 1.0 M1 包括
- 基於 Apache Axiom 的串流 SOAP 訊息模型,
- 與 Acegi 集成的 WS-Security 支援,
- JAXB 2.0 marshaller 支援,
- 自 0.9.1 以來發現的許多進一步改進和問題修復。
有關詳細資訊,請參閱變更日誌。
有關 Spring-WS 及其目標的更多資訊,請參閱 Spring-WS 首頁。
Spring Web Flow 1.0 RC2 已發布

親愛的 Spring 社群:
我們很高興地宣布 Spring Web Flow (SWF) 1.0 RC2 (Release Candidate 2) 已發布。 下載 | 文檔 | 變更日誌
此版本包含錯誤修復和小的改進。 1.0 RC2 的新增功能包括...
新增和值得注意的功能
支援以可組態的方式,將新啟動的 Flow 執行輸入從其呼叫環境傳遞進來。 預設情況下,所有請求參數都作為輸入公開。然後 Flow 可以選擇使用其輸入對應器將此輸入對應到其自己的本地範圍中。此對應器定義了 Flow 的輸入契約,無論 Flow 是作為頂層 Flow 啟動還是作為子 Flow 啟動,該契約都是一致的。
以下面的請求 URL 為例
https://127.0.0.1:8080/flights/search-flow?flightNumber=12345
預設情況下,當存取此 URL 時,後端的 FlowExecutor 會將 "flightNumber" 請求參數放入一個 "input map" 中。 然後將輸入映射傳遞給 "search-flow" 的新執行。
在 search-flow 定義中
<flow start-state="executeSearch">上面的 <input-mapper> 定義了 Flow 的輸入契約,聲明此 Flow 支援 "flightNumber" 輸入屬性。 當在啟動時提供 flightNumber 時,它將被對應到 "flowScope" 中,名稱為 "flightNumber"。 該對應器還能夠在對應操作期間執行類型轉換。
<input-mapper>
<mapping source="flightNumber" target="flowScope.flightNumber"/>
</input-mapper>
...
</flow>
要自訂 Flow 執行輸入映射填充,例如,從請求路徑或其他一些外部來源提取屬性,請配置 "FlowExecutorImpl.inputMapper" 屬性。
支援在 JSR168 Portlet 環境中執行 Flow 和外部重新導向。 結合基於延續的儲存庫,這允許在 Portlet 環境中使用瀏覽器的導航按鈕(後退、重新整理)。 此外,在 Portlet 環境中,我們現在公開一個 "globalSessionMap" 屬性,用於存取 Portlet Session APPLICATION_SCOPE 中的屬性。
一個名為 "SingleKeyFlowExecutionRepositoryFactory" 的新儲存庫工廠。 此實作會為每個持久性 Flow 執行產生一個單一唯一識別碼。 它適用於實現 1.0 EA "conversation redirect" 語義——在每次 POST 後,一個 REDIRECT-GET 命中一個穩定的 "flow execution URL",該 URL 嵌入了恆定的 Flow 執行金鑰的情況。 有關說明,請參閱 NumberGuess 範例。
引入獨立的 "conversation" 子系統,提供的 Flow 執行儲存庫實作委託給該子系統,以劃分管理 Flow 執行狀態的邏輯對話。 此對話子系統與 Spring Web 的其餘部分完全分離
Flow,可在 SWF 之外使用,並且隨著時間的推移可能會發展成其自己的獨立模組。 中心服務介面包括
public interface ConversationService {當啟動新的 Flow 執行並且需要將其持久化到一個請求之外時,儲存庫會呼叫 "beginConversation" 以啟動新的邏輯
public Conversation beginConversation(ConversationParameters parameters);
public Conversation getConversation(ConversationId id);
public ConversationId parseConversationId(String encodedId);
}
public interface Conversation {
public ConversationId getId();
public void lock();
public void end();
public Object getAttribute(String name);
public void setAttribute(String name, Object value);
public void removeAttribute(String name);
public void unlock();
}
對話,並將屬性放置在對話範圍內以追蹤執行狀態。 同樣地,當 Flow 執行結束時,控制對話也結束,並且會清除任何已配置的狀態。
未來,我們希望在此系統中提供強大的功能,包括透過 JMX 進行對話監控和管理,以及對話歷史記錄和統計資訊。 我們還希望證明其適用於 Spring Web Flow 之外的其他環境。 特別感謝 Juergen Hoeller 和 Ben Hale 在此可移植對話服務抽象的設計方面的幫助。
潛在的用戶影響變更
對於 1.0 RC2,在邁向 1.0 最終版的過程中,有一些潛在的影響用戶的變更。 以下部分註解了它們
在 spring-webflow-dtd 中,為了與其他屬性和元素名稱保持一致,我們將 <action/> 元素屬性 'resultName' 和 'resultScope' 重新命名為 'result-name' 和 'result-scope'。
為了簡單起見,移除了 FormAction 屬性 "bindOnSetupForm" 和 "validateOnBinding"。 經驗表明,這些屬性很少使用,並且一直是新用戶感到困惑的根源。 作為更好的替代方案,要在進入檢視狀態之前執行資料繫結操作,只需從 Flow 定義中呼叫 "bind" action 方法。 要計算是否應對 bindAndValidate 嘗試執行驗證,請覆寫單一 "validationEnabled(RequestContext)" 鉤子。
移除了 FormAction "exposeFormObject" action 方法。 只需使用首選的 "setupForm" 即可。
簡化了 FlowExecutionRepository 和 FlowExecutor SPI 介面。 現在,更多邏輯封裝在 FlowExecutionRepository 後面,包括產生的 FlowExecutionKeys 的結構和格式。 此外,FlowExecutionRepository 現在嚴格負責管理持久性 Flow 執行,僅此而已。 SWF 核心不再知道 "conversation" 的額外概念。 這意味著幾件事
- 整體儲存庫介面更簡單,更容易使用自訂 FlowExecutionKeys 建立自訂 FlowExecutionRepositories。
- SWF 核心詞彙更強大:Flow 執行器調用 Flow 執行來執行 Flow。 超過一個請求保持活動的執行會被持久化到儲存庫。
- 預設儲存庫實作選擇委託給一個獨立的 "conversation 子系統" 來追蹤由執行系統驅動的對話狀態,但對此系統的依賴是完全封裝的並且是可選的。
FlowExecutor 介面(進入 SWF 的進入點)也為呼叫者簡化了。 它現在封裝了複雜的內部類型,例如
EventIds 和 FlowExecutionKeys,因此總體上更容易使用。
同樣地,移除了對顯式 "conversationRedirect" 的支援。 這表示移除了 "conversationRedirect:"
'view' 字首和 "CONVERSATION" RedirectType。 要使用 1.0 RC2 實現相同的邏輯重新導向語義,只需使用 redirectOnPause 類型 FLOW_EXECUTION 和儲存庫工廠
SingleKeyFlowExecutionRepositoryFactory 配置 FlowExecutor。
--
Spring Web Flow 1.0 RC2 進一步完善了參考手冊,提供了 50 頁關於 SWF 用法的內容。 該手冊可線上以 HTML 和 PDF 形式提供。
開始使用 Spring Web Flow 的最佳方法之一是查看並逐步執行範例應用程式。 我們建議查看所有範例,並從一開始就根據需要補充參考手冊材料。 10 個範例應用程式與 1.0 RC2 版本一起提供,每個範例都展示了一組不同的產品功能。 這些範例是
1. Phonebook - 展示大多數功能的原始範例(包括子流程)
2. Sellitem - 展示具有條件轉換、流程執行重新導向、對話範圍和延續的嚮導
3. Flowlauncher - 展示啟動和恢復流程的所有可能方式
4. Itemlist - 展示 REST 風格的 URL 和內聯流程
5. Shippingrate - 示範 Spring Web Flow 與 Ajax 的結合
技術 (感謝 Steven Devijver)
6. NumberGuess - 示範有狀態 Bean 和 "單一金鑰" Flow
執行重新導向。
7. Birthdate - 展示 Struts 整合
8. Fileupload - 展示多部分檔案上傳
9. Phonebook-Portlet - Portlet 環境中的電話簿範例
(請注意流程定義沒有更改)
10. Sellitem-JSF - JSF 環境中的 sellitem 範例
要建置範例應用程式以進行單一步驟部署,只需解壓縮發布封存檔,存取 projects/spring-webflow/build-spring-webflow 目錄,並執行 "ant dist" 目標。請參閱發布版的 readme.txt 和
projects/spring-webflow/spring-webflow-samples/readme.txt,以取得有關發布封存檔內容和範例的更多資訊。
所有範例專案都是 Spring IDE 專案,可直接匯入 Eclipse。
感謝所有支持此版本的人。目前我們預計下一個 SWF 版本將是 1.0 正式版,目標是六月下旬的
時間範圍。如果需要,我們仍然有可能推出另一個 1.0 候選版本。請務必關注 SWF 首頁和
論壇以獲取更新。
享受!
Spring Web Flow 團隊
Spring Web Flow 1.0
Spring IDE 1.3.1 發布
親愛的 Spring 社群:
我們很高興地宣布 Spring IDE 1.3.1 已經發布。
這個版本的 Spring IDE 提供了一系列的錯誤修正。如需完整列表,請訪問 http://springide.org/project/milestone/Release%201.3.1
變更
- 現在,如果您想使用 BeansXmlEditor,才需要 Web Tools。
- 修正了圖像快取中的資源洩漏
- 更新至 Spring 1.2.8
更多詳細資訊可從專案網站 http://springide.org/ 取得
使用 Eclipse 的更新管理器從專案的更新站點 http://springide.org/updatesite/ 安裝此版本
錯誤報告的票證可以是…
Acegi Security 1.0.0 已發布
經過兩年半以上的開發,我很高興地宣布 Acegi Security 1.0.0 現在正式發布。
除了自 1.0.0 RC2 以來的 80 多項改進和修復之外,這個新版本還包括一些有助於新使用者的變更。 這包括對參考指南的重大重組和擴展(現在超過 90 頁)以及一個新的“簡化版”教程範例應用程式。
此外,許多新使用者經常遇到的問題已得到解決,例如
- 自訂 403 訊息(而不是使用 Servlet Container 的錯誤處理程序)
- 檢測 XML 文件重新格式化後損壞的屬性輸入
- 一個新的登出篩選器。
我們還重構了我們的 LDAP 服務,使 SecurityContextHolder 成為可插入的策略(對於希望避免 ThreadLocal 的富客戶端特別有用),並改進了 CAS 支援。
請訪問 這裡 取得詳細的變更日誌。與往常一樣,發布 ZIP 文件中包含詳細的升級說明。
位於 http://acegisecurity.org 的專案網站提供了有關 Acegi Security 功能的更多資訊、在線文件存取以及下載最新版本的連結。 下個月我還將在 SpringOne 上介紹 Acegi Security,所以我希望在那裡見到你。