Spring 的一種 Java 配置選項

工程 | Rod Johnson | 2006年11月28日 | ...

得益於我們可插拔的理念和大量辛勤的實現工作,Spring IoC 容器(像 Spring 的大部分其他部分一樣)極其靈活。

常常被忽視的一點是,Spring 配置不一定必須是 XML,儘管 XML 格式是目前最常用的。Spring 有自己的內部元資料格式,以 BeanDefinition 介面及其子介面的形式存在。代表 IoC 容器例項的 BeanFactory 和 ApplicationContext 實現由這種 Java 元資料驅動,並且與元資料解析完全獨立,元資料解析是…

Spring 2.0 中的 XML 語法糖

工程 | Rod Johnson | 2006年11月26日 | ...

如果你關注了10月份的 Spring 2.0 版本,你會知道其中一個重要的新特性是 XML 擴充套件名稱空間:定義新的 XML 元素和屬性的能力,這些元素和屬性可以生成 Spring 元資料,並可以與常規的 Bean 定義一起使用。這提供了一個寶貴的新擴充套件點,使得 Spring 配置對於許多重複任務來說更容易使用,並且更強大。

然而,還有一個你可能沒有注意到的甜美小語法糖——這可能是因為 Spring 團隊裡還沒有人告訴你……我曾對自己承諾…

Spring Framework 2.0.1 釋出

釋出 | Juergen Hoeller | 2006年11月23日 | ...

親愛的 Spring 社群:

我們很高興地宣佈 Spring 2.0.1 已經發布。下載 | 文件 | 變更日誌

這是 Spring 2.0 的第一個維護版本,包含自 2.0 最終版本釋出以來報告的大多數 bug 修復以及許多次要增強。此版本還引入了 OpenJPA 支援和 GlassFish 織入支援。此外,它還對 AspectJ 支援的內部機制進行了重新設計,並改進了 Bean 定義工具 SPI。

一如既往,詳細資訊請參閱變更日誌

如果您是 Spring 2.0 系列的新使用者,請參閱原始的 Spring 2.0 釋出公告以獲取更多資訊。

供您參考,Spring 2.0.2 版本計劃於12月底釋出。我們的 JIRA 路線圖概述了該版本計劃解決的問題。

Juergen
-----
Juergen Hoeller
Spring Framework 開發負責人
Interface21 首席架構師
http://www.springframework.org
http://www.interface21.com

Spring LDAP 1.1.1 釋出

釋出 | Ulrik Sandberg | 2006年11月18日 | ...

親愛的 Spring 社群:

我們很高興地宣佈 Spring LDAP 1.1.1 版本已經發布。這是一個更新版本,增加了一些新功能並修復了 1.1 版本中的一些問題。下載 | 變更日誌 | 文件 | API

一些更重要更改的總結

  • 增加了在搜尋中使用伺服器端控制元件的功能。
  • DirContextAdapter.getNameInNamespace() 現在返回完整的 DN。
  • DistinguishedName 現在支援由“+”號分隔的多值 RDN,例如“cn=Rod+sn=Johnson”。
  • 增加了接受返回屬性名稱陣列的查詢方法。
  • 內部將 Spring 升級到 2.0。仍然支援 Spring 1.2.8。

關於 Spring LDAP
Spring LDAP 是一個簡化 LDAP 操作的 Java 庫,基於 Spring 的 JdbcTemplate 模式。該框架減輕了使用者查詢和關閉上下文、遍歷 NamingEnumerations、編碼/解碼值和過濾器等的負擔。

LdapTemplate 類封裝了傳統 LDAP 程式設計中涉及的所有底層工作,例如建立、遍歷 NamingEnumerations、處理異常和清理資源。這使得程式設計師能夠處理重要的事情——在哪裡找到資料(DN 和過濾器)以及如何處理它(對映到域物件和從域物件對映、繫結、修改、解綁等),就像 JdbcTemplate 解除了程式設計師除了實際 SQL 以及資料如何對映到域模型之外的所有負擔一樣。

除此之外,Spring LDAP 還提供了從 NamingExceptions 到 DataAccessExceptions 的異常轉換,以及用於處理過濾器、LDAP 路徑和屬性的幾個實用工具。

Spring-LDAP 需要 J2SE 1.4。構建需要 J2SE 1.4。執行示例需要 J2EE 1.4(Servlet 2.3, JSP 1.2)。

從哪裡開始
從上面的連結下載分發包。分發包包含詳盡的 JavaDoc 文件以及完整的參考文件和一個演示如何使用 Spring LDAP 的示例應用程式。

主頁
Spring LDAP 的永久主頁是 http://www.springframework.org/ldap

歷史
Spring LDAP 基於 SourceForge 的 LdapTemplate 專案。建議 LdapTemplate 的使用者切換到 Spring LDAP。

Mattias Arthursson 和 Ulrik Sandberg
Spring LDAP 專案團隊

Spring Framework:專案和名稱的起源

工程 | Rod Johnson | 2006年11月09日 | ...

我經常被問到“Spring”這個名字的起源。

這個名字可以追溯到2002年底。2002年11月,我出版了 Expert One-on-One J2EE Design and Development。這本書附帶了30,000行框架程式碼,這些程式碼佔據了我全職撰寫這本書整整一年的大部分時間。(寫一本750頁的書本身工作量就很大;寫一個與之配套的實質性框架簡直是自虐。那很辛苦。)Spring Framework 的許多基本概念都在那裡:一個已經具備強大功能的 IoC 容器,包括 BeanFactory 和 ApplicationContext…

最後機會加入澳大利亞的500多名參與者

工程 | Ben Alex | 2006年11月01日 | ...

如果你正在閱讀這篇部落格,很可能你已經知道 Spring 是一個非常流行的框架。大多數使用過它的 J2EE 開發者都非常喜歡它,這體現在 12+ 本書、1,000,000+ 下載、14,000+ 論壇成員等。然而,即使是我,當我一週多前釋出澳大利亞 Spring 使用者組的公告時,產生的興趣之大也讓我驚訝…截至今天,我們已有超過五百名註冊參加這三次會議。事實上,我們已經需要將悉尼會議移至更大的場所,而布里斯班墨爾本的會議幾乎已經預訂滿。如果你是…

Oracle、開源和商品化

工程 | Rod Johnson | 2006年10月28日 | ...

我在舊金山參加了 Oracle World 大會。我甚至在 Thomas Kurian 關於 Java 中介軟體的主題演講中簡短地發言了。但是 Neelan 和我週二必須離開,錯過了大新聞:Larry Ellison 宣佈 Oracle 正在為 Linux 提供支援

從開源業務的角度來看,這是一個有趣的事件。更廣泛的影響是什麼?

Oracle 正在為一個他們沒有建立且不受他們控制的開源產品提供支援。

這之所以可能,原因有幾個

  • Linux 不是一個產品。它是一類技術,由公司或組織進行組裝、文件編寫、分發和支援產品。
  • Linux 支援在某種程度上已經商品化。Red Hat 只是提供支援的幾個分發商之一。
  • Linux 的領導權是分散的。Linus Torvalds 不為大型分發商工作;Red Hat 做得比大多數公司多,但沒有一家公司能提供明確的領導。
  • Linux 的領導力不如你想象的那麼重要。Linux 主要不是創新的引擎,而是商品化的引擎。

然而,思考像 Oracle 這樣的公司在提供服務方面的侷限性是很有趣的…

Interface21 / Spring 在 Oracle OpenWorld 2006

工程 | Neelan Choksi | 2006年10月23日 | ...

Rod 和我正在舊金山參加 Oracle OpenWorld 2006。這確實是一個盛況。我無法決定“傲慢”還是“令人印象深刻”是恰當的描述方式,但數字不會撒謊。他們預計大會將有45000人參加,舊金山市認為此次大會將為城市帶來50-6000萬美元的收入。顯然,不允許任何 Oracle 員工住在機場以北的酒店。更令人震驚的事情之一是,城市為大會封鎖了 Moscone 前面的 Howard 街的一部分。

今天早上的 Oracle Develop 主題演講由 Oracle 高階副總裁 Thomas Kurian 發表,Spring 成為了關注焦點。Thomas 讓 Rod 在主題演講期間上臺,描述 Spring 是什麼以及 Spring 2.0 的新特性。Rod 還談到了合作…

Spring 2.0 正式版釋出,首日下載量超過10,000次

工程 | Rod Johnson | 2006年10月05日 | ...

Spring 2.0 已於週二釋出最終版本!這是 Spring 團隊 9 個月辛勤工作以及大量使用者反饋(感謝!)的成果,也是向前邁出的重要一步。

我保證我的下一篇部落格將討論與下載量無關的內容。我一直在嘗試一些有趣的方法來測試 @AspectJ 註解中的切入點,所以下次我希望釋出一些有趣的程式碼。

但我們剛剛注意到 SourceForge 提供了一些令人驚歎的資料,我忍不住要發出來。在最初的 24 小時內,Spring 2.0 的下載量超過了 10,000 次!幾個月來,人們對 Spring 2.0 的興趣一直在增強——一些使用者甚至已經在生產環境中使用了一個釋出候選版本,包括歐洲一個知名的媒體網站——我想 Keith 精彩的釋出頁面

Spring Web Flow 1.0 RC4 釋出

釋出 | Keith Donald | 2006年10月05日 | ...
親愛的 Spring 社群:
 
我們很高興地宣佈 Spring Web Flow 1.0 RC4 已釋出。
 

 

Spring Web Flow 是 Spring 社群的一個產品,專注於 Web 應用程式中使用者介面流程的編排。

此版本包含許多改進和幾個令人興奮的新功能。我們認為這是迄今為止最穩定的版本,最終也是使 Spring Web Flow 1.0 最終版本的路線圖功能完善的版本。Spring Web Flow 1.0 最終版本將在下週釋出,改動最小。在此期間,我們鼓勵您測試 1.0 RC4,以幫助在大規模釋出 1.0 之前捕獲任何剩餘的問題。

請注意,此版本中有影響使用者行為的更改。1.0 RC3 或更早版本的使用者應查閱升級指南,其中詳細概述了這些更改。

1.0 RC4 的新特性和值得注意的列表令人興奮,包括:

新特性和值得注意之處

作為 Spring Web Flow 1.0 最終版本之前的最後一個釋出候選版本,Spring Web Flow 1.0 RC4 引入了強大的新功能,例如渲染動作 (1)、評估動作 (2)、設定動作 (3)、快閃記憶體範圍 (4)、流程執行屬性 (5) 和暫停時總是重定向 (6)。它提供了增強的文件、更好的流程定義驗證、智慧預設值以及一個完整的自定義 Spring 2.0 配置 Schema (7) 用於配置流程執行引擎。

  • (1) 渲染動作在響應渲染之前執行應用程式行為。當檢視狀態被要求進行可渲染檢視選擇時,在進入或由重定向或瀏覽器重新整理按鈕觸發重新整理時,都會呼叫渲染動作。以下示例顯示了一個渲染動作,它在渲染結果檢視之前執行電話簿搜尋。

    <view-state id="displayResults" view="searchResults">
        <render-actions>
            <bean-action bean="phonebook" method="search">
                <method-arguments>
                    <argument expression="flowScope.searchCriteria"/>          
                </method-arguments>
                <method-result name="results"/>
            </bean-action>
        </render-actions>
        <transition on="newSearch" to="enterCriteria"/>
        <transition on="select" to="browseDetails"/>
    </view-state>

  • (2) 評估動作根據流程執行狀態評估表示式。預設情況下,表示式(基於 OGNL)可以針對流程執行的根 RequestContext 可訪問的任何物件,包括任何範圍(例如流程範圍)中的物件。以下示例顯示了一個評估動作,它呼叫“game”流程範圍 Bean 上的“makeGuess”方法
    <action-state id="makeGuess">
        <evaluate-action expression="flowScope.game.makeGuess(requestParameters.guess)">
            <evaluation-result name="guessResult"/>
        </evaluate-action>
        <transition on="CORRECT" to="showAnswer"/>
        <transition on="*" to="enterGuess"/>
        <transition on-exception="java.lang.NumberFormatException" to="enterGuess"/>
    </action-state>
  • (3) 設定動作設定範圍型別中的屬性值,例如流程範圍。該屬性可以是頂級屬性,也可以是巢狀屬性路徑上的屬性。以下示例顯示了一個設定動作,它在快閃記憶體範圍中將“fileUploaded”屬性設定為“true”。
    <action-state id="uploadFile">
        <action bean="uploadAction" method="uploadFile"/>
        <transition on="success" to="selectFile">
            <set attribute="fileUploaded" scope="flash" value="true"/>
        </transition>
    </action-state>
  • (4) 快閃記憶體範圍是一種新的範圍型別,用於跨重定向和檢視的任何重新整理持久化屬性。當訊號觸發離開檢視的事件時,快閃記憶體範圍將被清除。以下完整的流程定義示例展示瞭如何使用快閃記憶體範圍將“fileUploaded”屬性暴露給 selectFile 檢視狀態,以便在成功上傳後顯示成功訊息。
    <flow xmlns="http://www.springframework.org/schema/webflow"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.springframework.org/schema/webflow
                                           http://www.springframework.org/schema/webflow/spring-webflow-1.0.xsd">
   
        <start-state idref="selectFile"/>
       
        <view-state id="selectFile" view="fileForm">
            <transition on="submit" to="uploadFile"/>
        </view-state>
   
        <action-state id="uploadFile">
            <action bean="uploadAction" method="uploadFile"/>
            <transition on="success" to="selectFile">
                <set attribute="fileUploaded" scope="flash" value="true"/>
            </transition>
        </action-state>
       
    </flow>
  • (5) 流程執行屬性允許您設定可以影響流程執行行為的自定義屬性。以下示例顯示了在 Portlet 環境中將“alwaysRedirectOnPause”屬性設定為 false 的說明(在此環境中重定向通常不適用)。
    <flow:executor id="flowExecutor" registry-ref="flowRegistry">
        <flow:execution-attributes>
            <flow:alwaysRedirectOnPause value="false"/>
        </flow:execution-attributes>
    </flow:executor>
  • (6) “暫停時總是重定向”提供了預設的 POST+REDIRECT+GET 行為,無需特殊編碼。現在,預設情況下,當進入檢視狀態時會自動發出重定向。這會觸發重新整理到流程執行 URL,該 URL 在會話活動期間保持穩定。
  • (7) 新的 Spring 2.0 配置方言極大地簡化了系統配置,並提供了強大的驗證和工具支援。現在,配置 webflow 的基礎設施就像定義兩個元素一樣簡單,如下所示的完整示例:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:flow="http://www.springframework.org/schema/webflow-config"
           xsi:schemaLocation="
               http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
               http://www.springframework.org/schema/webflow-config
               http://www.springframework.org/schema/webflow-config/spring-webflow-config-1.0.xsd">
   
        <!-- Launches new flow executions and resumes existing executions. -->   
        <flow:executor id="flowExecutor" registry-ref="flowRegistry"/>
       
        <!-- Creates the registry of flow definitions for this application -->
        <flow:registry id="flowRegistry">
            <flow:location path="/WEB-INF/flows/**-flow.xml"/>
        </flow:registry>
       
    </beans>

更多有關這些功能的資訊請參見參考手冊。Spring Web Flow 1.0 RC4 進一步完善了參考文件,提供了 70 頁的 SWF 使用說明。手冊可在 HTMLPDF 格式的線上版本中獲取。

入門

開始使用 Spring Web Flow 的最佳方法之一是檢視和逐步學習示例應用程式。我們建議檢視所有示例,並根據需要從一開始就補充參考手冊中的材料。此版本附帶了十個示例應用程式,每個應用程式都演示了一組獨特的產品功能。這些示例包括:

  1. 電話簿 - 演示大多數功能(包括子流)的原始示例
  2. 銷售項 - 演示帶有條件轉換、流程執行重定向、自定義文字欄位格式和續接的嚮導
  3. 流程啟動器 - 演示啟動和恢復流程的所有可能方式
  4. 專案列表 - 演示 REST 風格的 URL 和內聯流程
  5. 運費計算 - 演示 Spring Web Flow 與 Ajax 技術結合使用
  6. 猜數字 - 演示有狀態 Bean、評估操作和“單鍵”流程執行重定向。
  7. 出生日期 - 演示 Struts 整合
  8. 檔案上傳 - 演示多部分檔案上傳、設定操作和快閃記憶體範圍
  9. 電話簿-Portlet - Portlet 環境中的電話簿示例(注意流程定義沒有變化)
  10. 銷售項-JSF - JSF 環境中的銷售項示例

要快速評估示例應用程式,只需

  1. 解壓縮 spring-webflow-1.0-rc4.zip 釋出存檔
  2. 訪問 projects/spring-webflow/build-spring-webflow 目錄
  3. 執行 "ant dist" 目標。
  4. 請參閱 "target/artifacts" 目錄,獲取每個示例的可部署 .war 檔案以及解壓後的 war 目錄。
有關釋出存檔內容和示例的更多資訊,請分別參閱釋出 readme.txt 和 projects/spring-webflow/spring-webflow-samples/readme.txt。

所有示例專案都是可以直接匯入到 Eclipse 中的 Spring IDE 專案。

感謝所有支援此版本的人。Spring Web Flow 1.0 現在...終於...就在眼前了。

祝您使用愉快!

Spring Web Flow 團隊

訂閱 Spring 新聞郵件

訂閱 Spring 新聞郵件,保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您快速進步。

瞭解更多

獲取支援

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

瞭解更多

近期活動

檢視 Spring 社群所有即將到來的活動。

檢視全部