Maven Artifacts (09/2007)

工程 | Ben Hale | 2007 年 9 月 18 日 | ...

到目前為止,Spring Portfolio Maven artifacts,尤其是快照版本,創建方式不一致且分散在各個位置。 在過去的幾週裡,我們一直努力使專案在這些 artifacts 的創建和上傳方面更加一致。

Maven 儲存庫

Spring Portfolio 中 Maven 支援最實用的改進之一是使用一致的儲存庫位置。 根據您對程式碼的熟悉程度,有三個不同的儲存庫。

發布儲存庫

對於任何最終版本(Spring 2.5、Spring Web Flow 2.0 等),該版本的 Maven artifacts 將被上傳到 Maven Central 儲存庫 (http://repo1.maven.org/maven2)。 使用此儲存庫不需要您付出任何努力,因為 Maven 會自動在那裡尋找 artifacts。

此儲存庫中的 artifacts 確實 遵循預期的儲存庫行為,並且不會(且無法)被移除。

里程碑儲存庫

對於任何里程碑版本(Spring 2.5-RC1、Spring Web Flow 2.0-M2 等),該版本的 Maven artifacts 將被上傳到 Spring 里程碑儲存庫 (http://s3.amazonaws.com/maven.springframework.org/milestone)。 使用此儲存庫需要您將一個條目添加到 POM 中的 <repositories/> 元素。 它應該看起來像這樣


<repository>
    <id>spring-milestone</id>
    <name>Spring Portfolio Milestone Repository</name>
    <url>http://s3.amazonaws.com/maven.springframework.org/milestone</url>
</repository>

此儲存庫中的 artifacts 遵循預期的儲存庫行為,並且會定期被移除。 在發布最終版本(Spring 2.6、Spring Web Flow 2.1 等)後,將移除 artifact 之前版本的所有里程碑版本。 例如,當 Spring 2.6 發布時,將移除 Spring 2.5 的里程碑版本,同時保留 Spring 2.6 的里程碑版本。

快照儲存庫

對於任何快照版本(Spring 2.5-SNAPSHOT、Spring Web Flow 2.0-SNAPSHOT 等),該版本的 Maven artifacts 將被上傳到 Spring 快照儲存庫 (http://s3.amazonaws.com/maven.springframework.org/snapshot)。 使用此儲存庫需要您將一個條目添加到 POM 中的 <repositories/> 元素。 它應該看起來像這樣


<repository>
    <id>spring-snapshot</id>
    <name>Spring Portfolio Snapshot Repository</name>
    <url>http://s3.amazonaws.com/maven.springframework.org/snapshot</url>
</repository>

此儲存庫中的 artifacts 遵循預期的儲存庫行為,並且會定期被移除。 至少會保留給定 artifact 的最後 10 個快照版本。 如果從發行版中移除 artifact,其快照版本將立即被移除。 在發布里程碑版本或最終版本時,將移除 artifact 的所有快照,並為下一個版本創建一個新的快照。

儲存庫瀏覽

里程碑和快照儲存庫都託管在 Amazon’s S3 服務上,因此目錄結構不是人類可讀的。 要以人類可讀的格式查看儲存庫,請使用 S3Browse 實用程式。

僅使用這些 URL 進行人類可讀的查看。 如果您將它們用作 POM 的 URL,您將遇到錯誤。

Artifact 來源

另一個重要的改進是為所有版本添加了原始碼 artifact。 您會注意到在里程碑儲存庫中,所有 artifact 都部署了原始碼。 對於我們將來的所有最終版本也是如此。 具體來說,從 Spring 2.5 版本開始,除了組合的 Spring 原始碼之外,每個模組還將有一個原始碼 artifact。

Spring 快照

最終的改進是一個尚未完成的改進; Spring 的每日快照。 我很高興地說,這即將完成。 我仍在解決 Maven Ant Tasks 的最終問題,但這最終會開始出現,並且我會在它出現時再次宣布。 此外,您可以期望此功能最終會擴展到所有其他基於 ANT 的 Spring Portfolio 專案,以便所有專案都可以創建 Maven 快照以及里程碑。

Spring Framework 2.1 轉變為 Spring Framework 2.5!

工程 | Juergen Hoeller | 2007 年 9 月 10 日 | ...

我的第一篇部落格文章 - 多麼重大的消息啊 :-)

在發布一系列 Spring 2.1 里程碑版本之後,我們一直在審查我們引入的整體功能集

  • 完整的 Java 6 和 Java EE 5 支援 (JDBC 4.0, JTA 1.1, JavaMail 1.4, JAX-WS 2.0, etc)
  • 全功能的 annotation-driven 依賴注入 (包括對 'qualifier' 註釋的支援)
  • 支援 在 classpath 中進行元件掃描 (自動檢測帶註釋的類別)
  • AspectJ pointcut 表達式中的 bean name pointcut 元素
  • 內建支援 AspectJ 加載時編織 (基於 Spring 的 LoadTimeWeaver 抽象)
  • 更多 XML 配置命名空間 ("context", "jms") 以獲得最大的便利
  • 擴展的 SimpleJdbcTemplate 功能 (支援具名參數等)
  • 正式 認證的 WebSphere 支援 (支援 WebSphere 6 UOWManager 工具等)
  • Spring framework jars 作為 符合 OSGi 的 bundles 開箱即用
  • Spring ApplicationContext 可以 部署為 JCA RAR 檔案 (適用於 headless 應用程式模組)
  • JCA 1.5 訊息端點管理 (適用於 Spring 管理的 JMS 和 CCI 訊息監聽器)
  • 完全 修改的整合測試框架 (支援 JUnit 4 和 TestNG)
以及許多細節上的改進。 幾乎所有這些功能都已在最近發布的 2.1 M4 中提供。

我們得出結論,這大大超出了我們最初為 Spring 2.1 計劃的範圍。 用於里程碑的 2.1 版本號並不能反映此主要版本中功能的意義和全面性。

所以我很高興地宣布,2.1 里程碑將無縫地轉變為 Spring Framework 2.5 作為即將到來的主要版本! Spring 2.5 計劃在...中發布最終版本

Spring Framework 2.1 M4 已發布

發布 | Juergen Hoeller | 2007 年 9 月 10 日 | ...

親愛的 Spring 社群,

我很高興地宣布 Spring Framework 2.1 M4 已發布! 這個里程碑版本引入了

  • 'qualifier' 註釋支援,用於選擇特定的 @Autowired 匹配;
  • 我們下一代的 Spring TestContext Framework,支援 JUnit4;
  • 用於存儲過程調用的 SimpleJdbcCall 操作物件;
  • 支援自動裝配 scripted 物件 (Groovy, JRuby, BeanShell);
  • 在 Spring Web MVC 中支援 Tiles2 檢視。

Spring 2.1 M1 Released

 

這引導我到一些更令人興奮的消息...

我們一直在審查我們在最近的 2.1 里程碑中引入的整體功能集

  • 完整的 Java 6 和 Java EE 5 支援
  • 全功能的 annotation-driven 依賴注入
  • 支援在 classpath 中進行元件掃描
  • AspectJ pointcut 表達式中的 "beanName" pointcut 元素
  • 內建支援 AspectJ 加載時編織
  • 更多 XML 配置命名空間 (context, jms)
  • 擴展的 SimpleJdbcTemplate 功能
  • 正式認證的 WebSphere 支援
  • Spring ApplicationContext 可以部署為 RAR 檔案
  • JCA 1.5 訊息端點管理 (適用於 JMS 和 CCI)
  • 完全修改的整合測試框架

我們得出結論,這大大超出了我們最初為 Spring 2.1 計劃的範圍。 用於里程碑的 2.1 版本號並不能反映此版本中功能的意義和全面性。

所以我很高興地宣布,下一個版本將被稱為 Spring Framework 2.5 RC1,2.1 里程碑將無縫地引導到 Spring Framework 2.5 作為即將到來的主要版本! 查看 Interface21 團隊部落格 以獲取官方公告,以及隨著我們越來越接近最終版本,關於特定 Spring 2.5 功能的即將發布的文章。

Spring 2.1 M4 在這裡。 Spring 2.5 萬歲! :-)

享受吧,

Juergen Hoeller
Spring Framework 開發負責人
Interface21 - http://www.interface21.com

Interface21 在國會作證中被提及

工程 | Rod Johnson | 2007 年 9 月 8 日 | ...

Interface21 國會作證中被提及

風險投資家和 Core Capital Partners 的創始人 Jonathan Silver 週四作證反對擬議的適用於風險投資公司的稅率變更。 他的論點之一是基於風險投資的公司在美國各地創造就業機會

下一個重要的企業將來自哪裡? 事實是,沒有人知道,這就是為什麼風險投資家在所有五十個州尋找這些機會。 這就是為什麼風險基金支持了紐約市的 Music Nation 和密歇根州安娜堡的 Incept Biosystems、佛羅里達州西墨爾本的 Interface21、馬薩諸塞州 Westborough 的 Boston Power 和德克薩斯州聖安東尼奧的 Click Forensics。

事實上,我們的總部正在搬遷到加州聖馬刁。如同許多軟體供應商一樣,我們相信矽谷是實現我們潛力的最佳地點。我們最大的合作夥伴集中在這裡,而且這裡也是軟體產業招募高階主管人才的好地方。然而,Silver 的觀點仍然有效。我們的確正在佛羅里達州創造就業機會,我們的網路團隊就駐紮在那裡,並且目前正在使用 Spring Web Flow 做許多了不起的事情

Spring Web Flow 新一代版本的第一個里程碑發布

發布 | Keith Donald | 2007 年 8 月 28 日 | ...

親愛的 Spring 社群,

我們很高興地宣布,Spring Web Flow 新一代版本的第一個里程碑現在已經可用。Spring Web Flow 2.0 M1 引入了幾個主要的新功能,包括對 flow 管理的持久化上下文 (flow-managed persistence contexts) 的支援、對 Java Server Faces 的改進支援、完整的統一表達式語言 (EL) 支援,以及更全面的 範例網路應用程式

 

Spring Web Flow 2.0 是一個用於開發 Java 網路應用程式控制器的下一代框架。該框架提供了一個統一的運行時環境,用於在各種環境中執行無狀態有狀態的客戶端互動。

Web Flow 2.0 版本的目標

今天,大多數應用程式開發人員使用 Spring Web Flow 來實現線性頁面流程,例如精靈,方法是將 Web Flow 插入到他們的「基礎」網路框架中,例如 Spring MVC。這些頁面流程展現出線性導航規則,是有狀態的,並形成動態、自包含的網路應用程式功能模組。一個很好的例子是貸款申請流程:Web Flow 獨特的流程定義語言為實現這些類型的流程提供了一種自然的程式設計模型。

Spring Web Flow 2.0 的總體目標是正式地將產品從今天的狀態(一個主要用於實現線性精靈的框架),轉變為它一直以來被設計成為的樣子:一個通用的應用程式控制器引擎,用於驅動所有類型的客戶端互動。這些互動包括精靈、無狀態的 "RESTful" 互動,以及更細粒度、非線性/非同步的互動,這些互動通常出現在 "web 2.0" 應用程式中。

Spring Web Flow 2.0 將為 Spring 社群提供一個統一的應用程式控制器框架和運行時,適用於執行所有類型的客戶端互動,並且能夠整合各種視圖渲染技術和 UI 元件模型。這個統一的運行時將能夠一致地應用管理工具、安全性、AJAX 和受管理的持久性,以及其他獨特的功能。

查看完整的 Spring Web Flow 2.0 路線圖

Web Flow 2.0 M1 的新增功能和值得注意的地方

第一個 2.0 版本里程碑在通往 2.0 最終版的道路上引入了幾個主要的新功能。這些功能如下所述。

使用 JPA 和 Hibernate 的 Flow 管理的持久化上下文

Spring Web Flow 2.0 M1 引入了對使用 Hibernate 和 JPA 的Flow 管理的持久化上下文的支援。發布版中包含的新 飯店預訂範例應用程式展示了此功能。以下說明它在預訂範例中的工作方式

  • 當新的飯店預訂流程開始時,會自動為您建立持久化上下文。
  • 當您在流程中進行時,持久化上下文會自動用於所有資料存取操作。您不必擔心尋找流程綁定的 EntityManager 實例,也不必以任何方式管理它。
  • 當您授權預訂時,對受管理的持久實體的所有變更都會自動提交並刷新回資料庫。如果您選擇取消預訂,則不會提交您的任何變更。

此飯店預訂流程的圖形化 Spring IDE 視圖如下所示

Booking Flow 

改進了對 Java Server Faces (JSF) 的支援

Spring Web Flow 2.0 M1 引入了 Spring Faces 模組 (spring-faces-2.0-m1.jar),這是一個隨 Web Flow 發行版一起提供的元件,其中包含對使用 Java Server Faces 開發網路應用程式的組織的一流支援。預先存在的 Web Flow + JSF 整合已分解到此專案中,並且此專案將成為所有未來 JSF 整合工作的所在地。

Spring Faces 模組為 Spring 社群提供了一個專門的專案,用於探索額外的 JSF 整合機會。2.0 M1 中的初始工作引入了與 Ext 的整合,Ext 是一個流行的 Javascript GUI widget 框架。提供了幾個輕量級 JSF UI 元件,用於封裝豐富的 Ext widget 的渲染。我們採用的方法允許 Ext widget 裝飾標準 JSF 元件,新增類似桌面的外觀和感覺,以及額外的 UI 行為,例如客戶端驗證。以下 Ext 元件裝飾器在 2.0 M1 中提供

  • 一個日期驗證器元件,可在日期文字欄位上執行豐富的客戶端驗證,並具有美觀的日期選擇器控制項。
  • 一個文字驗證器,可在自由格式的文字輸入欄位上執行豐富的客戶端驗證。
  • 一個數字驗證器,可在數字文字欄位上執行豐富的客戶端驗證。

日期驗證器控制項的螢幕截圖(也用於飯店預訂範例應用程式)如下所示

 

Ext 控制項看起來很棒,並且由於所有 UI 行為都在客戶端執行,因此 UI 的響應速度非常出色。我們將在 Spring Faces 模組中,在未來 Web Flow 發布里程碑中在此領域新增更多支援。

擁有專用的 Spring Faces 模組也簡化了在 JSF 環境中設定 Spring Web Flow 的過程。在 2.0 M1 之前,開發人員需要手動修改 faces-config.xml 以設定樣板 Spring/SWF 整合管道。使用 2.0 m1,只需在您的 classpath 中包含 spring-faces-2.0-m1.jar 即可自動完成此設定。

統一表達式語言 (EL) 支援

此版本中的另一個新功能是對統一 EL 的完整支援,它提供了一種替代方案,可以替代 Spring Web Flow 中目前預設使用的基於 OGNL 的表達式解析器。現在建議在 JSF 環境中使用統一 EL,並且在未來的里程碑中,它將成為 JSF 開發人員的預設設置。

以下顯示了飯店預訂流程定義中使用的範例 EL 表達式:

 

上面的「id」表達式評估儲存在 Flow Scope 中的當前飯店識別碼。請注意,這裡不需要任何明確的 flowScope 字首。開發人員只需按其名稱引用變數,並且 ELExpressionEvaluator 會透過搜尋各種範圍來處理解析變數。這使得 Web Flow 定義中的受管理 bean 引用與用於模型繫結表達式的 JSF 視圖中的引用 100% 一致。例如,請參閱 bookingForm.xhtml 視圖中的以下程式碼片段

 

2.0 發布說明

Spring Web Flow 2.0 需要 Spring 2.0 或更高版本,以及 Java 1.4 或更高版本。

Spring Web Flow 2.0 將盡可能保留與 1.0.x 基於 XML 的流程定義語言的向後相容性。預計某些 SWF SPI 將在未來 Web Flow 2.x 里程碑中發生變化,因為 Web Flow 演變為一個完整的控制器框架。

Spring Web Flow 2.0 的未來里程碑將引入新的方言,用於以真實的程式設計語言定義流程,從而提供比目前基於 XML 的流程定義語法更強大的替代方案。基於 POJO 的 Java 流程定義語法正在開發中,基於 Groovy 的方法也是如此。此外,還將引入用於實現 REST-ful 和 CRUD 流程的高階流程方言。由於 Web Flow 定義 API 和執行運行時與任何具體的流程定義語法是分開的,因此我們可以自然地引入新的語法,以不同的方式在運行時設計應用程式控制器。

對於 JSF 使用者,Spring Web Flow 2.0 和 Spring Faces 在 JSF 1.1 和 JSF 1.2 上運行。Spring Faces 模組中的 UI 元件庫與 Web Flow 運行時無關,也可以與 JSF 的預設導航處理程式一起使用。

Spring Web Flow 2.0 將繼續為 Servlet 2.4 或更高版本、Portlet 1.0 或更高版本和 JUnit 3.8.1 或更高版本環境提供完整支援。

Spring Web Flow 2.0 將繼續在 Struts 1.2 或更高版本和 Spring MVC 2.0 或更高版本環境中運行,並且在 2.0 最終版中也可以用作獨立的網路應用程式控制器框架。

Spring Web Services 1.0 發布

發布 | Arjen Poutsma | 2007 年 8 月 17 日 | ...

經過兩年的開發,我們很高興地宣布 Spring Web Services 1.0 現在已經可用。

Spring-WS Logo

下載 | 參考文檔 | API 文檔

Spring Web Services 是 Spring 社群的產品,專注於建立文檔驅動的、契約優先的網路服務。Spring Web Services 的主要功能包括...

  • 使最佳實踐成為容易的實踐:Spring Web Services 使實施最佳實踐變得更容易。這包括諸如 WS-I 基本配置檔、契約優先開發以及在契約和實現之間保持鬆散耦合的實踐。
  • 強大的映射:您可以根據訊息 payload、SOAP Action 標頭或 XPath 表達式將傳入的 XML 請求路由到任何處理程式。
  • XML API 支援:傳入的 XML 訊息可以使用標準 JAXP API(例如 DOM、SAX 和 StAX)來處理,也可以使用 JDOM、dom4j、XOM 甚至 marshalling 技術來處理。
  • 靈活的 XML Marshalling:Spring Web Services 發行版中的 Object/XML Mapping 模組支援 JAXB 1 和 2、Castor、XMLBeans、JiBX 和 XStream。由於它是一個單獨的模組,因此您也可以在其他環境中使用它。
  • 重複使用您的 Spring 專業知識:Spring-WS 使用 Spring 應用程式上下文進行所有配置,這使您可以快速啟動並運行。此外,Spring-WS 的架構類似於 Spring-MVC 的架構。
  • 支援 WS-Security:WS-Security 允許您簽署 SOAP 訊息、加密和解密它們,或針對它們進行身份驗證。它與 Spring Security 集成!

想更深入瞭解 Spring Web Services 嗎?請參加 2007 年 12 月 12 日至 15 日在佛羅里達州好萊塢 Westin Diplomat 酒店舉行的 The Spring Experience 活動。 Arjen 將在會上發表兩個關於 Spring Web Services 的演講:Spring Web Services 介紹使用 Web Services 的 WS-DuckTyping

請參閱發布說明,以查看自 1.0-RC2 以來修復的問題清單。

最後,衷心感謝所有參與者。沒有你們,這一切都無法實現!

阿姆斯特丹 Java Meetup Q307,9 月 21 日

工程 | Alef Arendsen | 2007 年 8 月 2 日 | ...

又是舉辦下一次 Java Meetup 的時候了。我決定將在阿姆斯特丹舉行的這個季度活動的第 7 次聚會延後到夏天之後,因為荷蘭這裡的大部分人會在 8 月左右休假幾週。

我查看了我們的內部行程表,看起來 9 月 21 日是 9 月份唯一剩下的日子,所以我希望它也能符合其他人的行程安排。

我們將在與去年四月聚會相同的地點舉行,因為這對我們來說非常方便,而且每個人似乎都覺得不錯。第一次 Java Meetup 是在我最喜歡的阿姆斯特丹聚會場所舉行的……

Spring Framework 2.1 M3 發布

發布 | Juergen Hoeller | 2007 年 8 月 1 日 | ...

親愛的 Spring 社群,

我很高興地宣布 Spring 2.1 M3 已經發布!

這是 Spring 2.1 系列的第三個里程碑版本,引入了集合的自動裝配、「bean(name)」切入點元素、各種 JDBC 增強功能、JRuby 1.0 支援以及對整個框架的許多改進。

Spring 2.1 M1 Released

 

請參閱變更日誌JIRA 路線圖,以取得有關此版本中引入的新功能的更多詳細資訊。

請注意,我們也發布了 2.0.7 快照版本,其中包含從 2.1 M3 反向移植的修復程式。請嘗試使用最新的快照版本作為 2.0.5/2.0.6 的直接替代品!正式的 2.0.7 版本預計在 8 月 15 日發布。 

祝您使用愉快! 

Juergen Hoeller
Spring Framework 開發負責人
Interface21 - http://www.interface21.com

揭穿迷思:代理會影響效能

工程 | Alef Arendsen | 2007 年 7 月 19 日 | ...

在最近的一篇部落格文章中,Marc Logemann 觸及了代理效能的主題。在他的文章中,他要求「Spring 團隊」提供一份白皮書。我不想花費 (p) 頁又 (p) 頁來討論代理和位元碼編織機制之間的差異,直到奈秒級,但我認為再次重申這些差異是什麼,以及這個討論是否重要,是有價值的。

什麼是代理?我們為什麼要使用它們?

讓我們首先簡要地回顧一下代理的用途(一般而言,以及在 Spring 中)。根據四人幫 (GoF) 的 設計模式一書,代理是另一個對象的替代對象或佔位符,用於控制對它的存取。因為代理位於對象的呼叫者和實際對象本身之間,它可以決定阻止實際(或目標)對象被調用,或在目標對象被調用之前做一些事情。 prox.jpg

換句話說,代理可以用作實際對象的替身,以便對這些對象應用額外的行為——無論是與安全性相關的行為、快取還是效能測量……

Grails 和 Maven:不便的結合

工程 | Dave Syer | 2007 年 7 月 14 日 | ...

簡介

Grails 似乎越來越強大,而且看起來它絕對像他們說的「有發展前景」。我非常有興趣將這些前景稍微擴展到 Web 應用程式領域之外。如果您知道我對 Spring Batch 的工作,您可能可以猜到這會把我帶到哪裡。但對於本文,我只想分享我使用 Grails 應用程式的基本、低階部署和建置的一些經驗。

我對 Maven 2 有著愛恨交織的關係,並且我正在學習熱愛 Grails,但遺憾的是,這兩者並沒有特別好的協同作用。它將會……

取得 Spring 電子報

隨時關注 Spring 電子報

訂閱

搶先一步

VMware 提供培訓和認證,以加速您的進展。

瞭解更多

取得支援

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

瞭解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

查看全部