Spring Framework Maven 構件

工程 | Ben Hale | 2007 年 11 月 26 日 | ...

廣大使用者 的要求,Spring Framework Maven 構件現在已上傳到 Spring Snapshot Maven 倉庫。您可以在我 之前的博文 中找到有關所有 Spring Portfolio Maven 倉庫的詳細資訊,但我將在此處重新發布 Spring snapshot 倉庫的詳細資訊。

Spring Snapshot Maven 倉庫位於 http://s3.amazonaws.com/maven.springframework.org/snapshot。使用此倉庫需要在您的 POM 檔案中的 <repositories/> 元素中新增一個條目。它看起來應如下所示:


<repository>
    <id>spring-snapshot</id>
    <name>Spring Portfolio Snapshot…

Interface21 更名為 SpringSource

工程 | Rod Johnson | 2007年11月19日 | ...

我們正在更改公司名稱。本週,Interface21 將更名為 SpringSource。

在我們公司發展壯大的過程中,Interface21 以卓越的產品、思想領導力、優秀的團隊、專業的服務以及頂級的支援而聞名。隨著我們繼續提供所有這些,我們相信更改公司名稱將有助於我們的公司將它們帶給更廣泛的受眾。

當我在 2004 年創辦 Interface21 時,我必須選擇一個名字。我相信 Spring 是企業 Java 的未來,“Interface21”反映了我的這種感覺——這是 21 世紀的框架。現在我們…

Spring Framework 2.5 釋出

釋出 | Juergen Hoeller | 2007年11月19日 | ...

親愛的Spring社群,
 
我們很高興地宣佈 Spring Framework 2.5 最終版現已釋出。

Spring 2.5 RC1 Released

下載 | 支援 | 文件 | 更新日誌 

Spring 2.5 在 Spring 2.0 的基礎上增強了許多令人興奮的新功能,包括

  • 完整的 Java 6 和 Java EE 5 支援(JDBC 4.0, JTA 1.1, JavaMail 1.4, JAX-WS 2.0)
  • 功能齊全的註解驅動依賴注入,包括對“限定符”的支援
  • 支援在類路徑中自動檢測應用程式元件,並將其自動配置為 Spring 管理的物件
  • AspectJ 切入點表示式中新的 bean 名稱切入點元素
  • 基於 LoadTimeWeaver 抽象的 AspectJ 載入時織入的內建支援
  • 新的 XML 配置名稱空間“context”和“jms”,提供最大便利性
  • 一個完全修訂的整合測試框架,對 JUnit 4 和 TestNG 提供一流支援
  • 一個用於 Spring MVC 的新基於註解的控制器模型,支援 Servlet 和 Portlet 環境
  • 擴充套件的 SimpleJdbcTemplate 功能,包括對命名 SQL 引數的支援
  • 官方認證的 WebSphere 支援
  • Spring Framework jar 包開箱即用,封裝為 OSGi 相容捆綁包
  • 能夠將 Spring ApplicationContext 部署為 JCA RAR 檔案,用於無頭應用程式模組
  • JCA 1.5 訊息端點管理,用於 Spring 管理的 JMS 和 CCI 訊息監聽器

檢視系列文章 Spring 2.5 的新功能?,瞭解 Spring 2.5 新功能的詳細介紹,包括如何部署演示這些功能的 Spring 示例應用程式。

我們建議從所有以前的 Spring 2.0.x 版本升級到 Spring 2.5,以受益於 Spring 2.5 提供的新功能以及顯著的效能增強。Spring 2.5 設計為 Spring 2.0 的直接替代品,除了 jar 檔案內容略有重組(有關詳細資訊,請參閱發行版中的 readme 檔案)。

請注意,Spring 2.5 仍然與 JDK 1.4.2+ 和 J2EE 1.3+ 相容。Java 1.4 使用者,例如在 WebLogic 8.1 或 WebSphere 5.1/6.0 上,也非常歡迎升級到 Spring 2.5。我們建議在 Java 1.4 上執行時將 backport-util-concurrent jar 放在類路徑中,這將使 Spring 和您的應用程式受益於顯著的併發增強。

盡情享受 Spring 2.5,

Juergen Hoeller
Spring 框架開發負責人

Spring Web Flow 2.0 願景

工程 | Keith Donald | 2007 年 11 月 15 日 | ...

Spring Web Flow 2.0 M2 已 釋出。我對這個版本特別興奮,因為它為我們社群的未來實現宏大願景奠定了基礎。在這篇文章中,我將解釋這個願景是什麼,以及這個基礎將具體實現什麼。我還會詳細介紹 Web Flow 2.0 的架構,並將其與 1.0 版本進行比較。

Spring Web Flow 2.0 願景

2.0 的目標是發展 Spring Web Flow 作為一個受控的導航引擎,為 JavaServerFaces、流程管理持久化和非同步事件處理(Ajax)提供原生且顯著改進的支援。新的 Spring Faces 專案將構建在 Web Flow 2.0 之上,為 Spring 環境中的 JSF 檢視提供一流的支援。此外,Web Flow 將繼續為基於 Spring MVC 的檢視提供一流的支援,允許原生 JSF 和 MVC 檢視充分發揮其功能,即使在同一個應用程式中也同樣如此。

* 更新:在聽取了自 2007 年 Spring Experience 大會以來 Spring 社群的大量反饋意見後,上述願景於 08 年 1 月 11 日進行了更新。基於這些反饋,Spring Web Flow 2…

Spring 2.5 中的註解式 Web MVC 控制器

工程 | Juergen Hoeller | 2007 年 11 月 14 日 | ...

Spring 2.5 引入了一種編寫註解式 Web MVC 控制器的方法,我們對此的部落格介紹還不多……我將藉此機會概述一下 Spring MVC 目前的真正意義。

Spring MVC 本質上是一個請求分派器框架,包含 Servlet API 變體和 Portlet API 變體。它在其託管環境(Servlet 或 Portlet)內執行得非常緊密。可以將 Spring MVC 視為在 Servlet/Portlet 容器之上提供了基礎功能和便利性:例如,靈活的請求對映,控制器之間的分離…

回覆:EJB 3 與 Spring 的比較分析

工程 | Mark Fisher | 2007年11月09日 | ...

昨晚我參加了一個新英格蘭 Java 使用者組(NEJUG)的會議,Reza Rahman 在會上做了關於 EJB 3 和 Spring 的“比較分析”。Reza 是《EJB 3 in Action》的作者之一。我很高興見到 Reza,並尊重他提出了一個可能被視為有爭議的話題。我也很欣賞他確實嘗試分析了 EJB 3 和 Spring 的優缺點。儘管如此,我感到有必要澄清一下他在 Spring 方面的論述中有幾點不完全準確,這導致我(和其他與會者)認為這次演講是出於對 EJB 3 的偏見。公平地說,與固定規範版本不同,Spring 在不斷發展,我在這裡指出的一些內容是新功能。另一方面,有些是 Spring 2.0 的功能,已經推出一年多了。我個人認為,“比較分析”必須考慮到所比較產品的最新穩定版本的最新功能集。我想不用說,我可能也有點偏見,但我在這裡的目的是提供一個完全客觀的回應,以便演講可以被修改,以反映更“蘋果對蘋果”的比較。我將簡要回應演講中的 10 個“主題”。

1. EJB 使用註解來表示元資料。Spring 使用 XML。

會上提到 Spring 開始支援更多註解,但“還需要一段時間”。然而,Spring 2.0 版本提供了完整的 JPA 整合,使用 @PersistenceContext 註解來注入 EntityManager,並提供了註解驅動的事務管理,使用 Spring 的 @Transactional 註解(支援與 @Stateless EJB 相同的語義,預設傳播級別為 REQUIRED)。我特別感到失望的是,比較中沒有在雙方都包含 JPA(見下文第 3 點)。Spring 2.0 還引入了完整的基於註解的 AspectJ 支援(@Aspect、@Before、@After、@Around)以及“構造型”註解的概念。例如,@Repository 註解為直接使用 JPA 或 Hibernate API 的資料訪問程式碼(無需 Spring 的模板)提供了非侵入式的異常翻譯。Spring 早在 1.2 版本就提供了註解支援,例如 @ManagedResource,用於透明地將任何 Spring 管理的物件匯出為 JMX MBean。

對我來說,這個問題之所以排在首位,主要原因是“他們還需要一段時間”的評論。作為 Spring 2.5 註解驅動配置支援的主要開發者之一,我必須說 Spring 元模型非常靈活,因此我們能夠比預期的更快地提供一個全面的基於註解的模型。事實上,Spring 2.5 支援 JSR-250 註解:@Resource、@PostConstruct 和 @PreDestroy,以及 @WebServiceRef 和 @EJB。其中 @Resource 特別值得關注,因為它是 EJB 3 中依賴注入的主要註解。在 Spring 中,@Resource 註解不僅支援 JNDI 查詢(與 EJB 3 一樣),還支援注入**任何 Spring 管理的物件**。這有效地結合了這次演講中提到的 Spring 的主要優勢(Spring 支援任何型別的物件 DI)和 EJB 3 的主要優勢(使用註解而不是 XML)。Spring 2.5 還引入了一個更加細粒度的註解驅動依賴注入模型,該模型基於 @Autowired 和(可擴充套件的)@Qualifier 註解。Spring 2.5 還擴充套件了“原型”註解,包括 @Service 和 @Controller。每個原型註解都透過將其作為元註解來擴充套件通用的 @Component 註解。透過應用相同的技術,@Component 註解為使用者定義的原型提供了一個擴充套件點。Spring 甚至可以自動檢測這些帶註解的元件,作為 XML 配置的替代方案。例如,以下摘錄取自 2.5 版的 PetClinic 示例應用程式


   <context:component-scan base-package="org.springframework.samples.petclinic.web" />

由於 Web 控制器使用了註解驅動的依賴注入和用於請求對映的註解,因此不需要額外的 XML。我之所以指出這一點,是因為演講特別強調了 Web 層的配置的冗長。


@Controller
public class ClinicController {

   private final Clinic clinic;

   @Autowired
   public ClinicController(Clinic clinic) {
      this.clinic = clinic;
   }
   ...

有關 Spring 註解支援的最新介紹,請參閱:The Server Side 上的 Spring 2.5 入門教程,或最新版本的 Spring 參考手冊 - 特別是基於註解的配置部分。此外,請繼續關注本部落格和 Spring Framework 主頁,瞭解即將釋出的關於 2.5 版的文章和部落格。

2. Spring 允許您支援多種部署環境,但需要更多配置。

這實際上被 presenters 作為一個 Spring 的優勢來介紹,但強調了配置的開銷。事實是,任何認真對待測試和敏捷開發的專案的都將需要支援“多種部署環境”。換句話說,這個特定主題經常被曲解,好像它只適用於多種*生產*環境。實際上,在每個開發和測試周期中都部署到應用伺服器會是敏捷性的一個重大障礙。通常,Spring 使用者會模組化其配置,以便“基礎設施”配置(例如 DataSource、TransactionManager、JMS ConnectionFactory)是獨立的,並且動態屬性被外部化。由於 Spring 支援根據外部化屬性替換 '${placeholders}',因此包含不同的屬性檔案通常會變成一個透明的問題。

3. EJB 使用 JPA,Spring 使用 Hibernate

我必須承認,這一點最讓我困擾。在比較幻燈片中,EJB 3 示例展示了 JPA 透過 *entityManager* 進行資料訪問,並且 *entityManager* 例項是透過 @PersistenceContext 註解提供的。另一方面,Spring 示例使用了 Hibernate,並展示了 Hibernate SessionFactory 的 setter 注入。在我看來,這違反了真正“比較分析”的第一條規則:在比較的雙方使用最相似的功能。在這種特殊情況下,Spring 確實提供了直接使用 JPA API 的支援(即 JpaTemplate 是完全可選的;直接使用 'entityManager' 仍然參與 Spring 事務等),並且 Spring 也識別 @PersistenceContext 註解。自 Spring 2.0(最終版本已推出一年多)以來,一直支援這一點,所以我不太明白為什麼比較中沒有在 Spring 端也使用 JPA。比較的其他部分顯然基於 Spring 2.0,這給人一種選擇性過時和帶有偏見的印象。如果這個特定的例子被修改為“蘋果對蘋果”,它將削弱一個主要的總體主題:Spring 需要更多的配置,而 EJB 3 依賴於標準的註解。

現在,儘管我認為在 Spring 端使用 Hibernate 而不是 JPA 扭曲了比較,但它同時也揭示了 Spring 的一個優勢。如果您確實想直接使用 Hibernate API 而不是依賴 JPA API,Spring 支援這一點,並且它在 Spring 事務管理和異常翻譯方面以一致的方式實現。這就有機會使用超越 JPA 限制的 Hibernate 功能,例如 Hibernate 的“criteria”查詢 API。同樣,如果您想新增一些直接的 JDBC 進行資料訪問,而 ORM 是過度的話,Spring 也支援這一點——即使是在與 Hibernate 或 JPA 資料訪問相同的事務中呼叫。

4. Spring 不做任何假設,您必須提供配置。

一個具體的例子是事務管理器的定義。有人說您必須瞭解容器供應商級別的知識才能配置 Spring 整合。這是不正確的。例如,以下 bean 定義不包含任何特定於容器的資訊,但 Spring 將自動檢測所有 Java EE 應用伺服器中的事務管理器。


   <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>

如果您確實想利用特定於容器的功能,例如每個事務的隔離級別,那麼 Spring 也提供了一些專門的實現:*WebLogicJtaTransactionManager*、*WebSphereUowTransactionManager* 和 *OC4JJtaTransactionManager*。切換這些實現之間只需更改這一個定義。

除此之外,Spring 的配置幻燈片不必要地冗長。我擔心這也可能是出於強調 EJB 與 Spring 不同,依賴於智慧預設值的目的。例如,幻燈片顯示了


   <tx:annotation-driven transaction-manager="transactionManager"/>

實際上,如果 Spring 上下文中只定義了一個 'transactionManager',那麼 'annotation-driven' 元素上就不需要顯式提供該屬性。該屬性僅用於啟用在一個應用程式中*如果需要*使用多個事務管理器。這些“自動檢測”和“智慧預設”技術貫穿於 Spring,例如訊息偵聽器的 JMS 'connectionFactory'(在下面的示例 #6 中有體現)以及現有 MBean 伺服器或 RMI 登錄檔的自動定位。

從積極的方面來看,它實際上被提到是 Spring 允許“本地”事務管理的一個優勢。雖然 EJB 需要 JTA 進行事務管理,但許多應用程式不需要跨兩階段提交能力資源進行分散式事務。在這種情況下,Spring 允許使用更簡單、開銷更低的事務管理器:DataSourceTransactionManager(用於 JDBC)、HibernateTransactionManager 或 JpaTransactionManager。如果目標是準確描述優缺點,我本應聽到更多關於 Spring 這一特定優勢的細節。例如,這對於在容器外進行測試或在 Eclipse 或 IDEA 等輕量級 IDE 環境中開發是一個巨大的好處。

此外,如果您確實需要 JTA 進行分散式事務,但又想在 Tomcat 或 Jetty 等輕量級容器中執行,Spring 可以輕鬆支援 Atomikos 和 JOTM 等獨立的 JTA 提供商。當然,Spring 的事務管理器設定需要配置一個*單個* bean 定義,但這確實是一次性成本——但絕對值得。

5. Spring 沒有有狀態應用程式範例。

無狀態服務層的優點作為最佳實踐已經相當確立,Spring 也採納了這一點。然而,Spring 確實提供了單例以外的範圍。Spring 的“prototype”範圍為每次注入或查詢提供了一個獨立的例項,Spring 2.0 引入了 Web 範圍:“request”和“session”。範圍機制本身甚至可以擴充套件;可以定義自定義範圍並將其對映到對話的概念。Spring 還支援使用 CommonsPoolTargetSource 進行簡單的物件池,但物件池很少是狀態管理的最佳解決方案。

更重要的是,Spring 透過 Spring Web Flow 為 Web 應用程式提供了非常健壯、高度可配置的狀態管理。在那裡,對話狀態是透明管理的,這與本次演講中聲稱的開發人員必須直接與 HTTP Session 互動來管理 Spring 應用程式狀態的說法相反。此外,儲存庫配置是可插拔的,因此可以使用各種策略來物理儲存狀態(session、client、後端快取等)。最後,Spring Web Flow 的最新發展包括對擴充套件持久化上下文的支援以及對 JSF 的完全整合支援。

6. Spring 需要為每個 MessageListener 配置一個容器。

Spring 2.5 提供了一個新的 'jms' 名稱空間,以大大簡化訊息偵聽器的配置。請注意,沒有為每個偵聽器配置單獨的容器。多個偵聽器共享配置,並且廣泛使用了智慧預設值。


<jms:listener-container>
	<jms:listener destination="queue.confirm" ref="logger" method="log"/>
	<jms:listener destination="queue.order…

下載“Spring in Production”白皮書

工程 | Adrian Colyer | 2007年11月09日 | ...

我們最近舉辦了一個關於“Spring in Production”主題的網路研討會。我當時承諾將在我們的網站上提供網路研討會的錄音和配套幻燈片。不幸的是,為我們製作網路研討會的工程師忘記設定“record”標誌,所以我需要為您重新錄製課程 :(。我現在正在旅行,但我會盡快嘗試完成並提供。

好訊息是,在此期間你無需錯過。我寫了一篇關於“Spring 在生產環境中的應用”的白皮書,涵蓋了網路研討會的內容以及更多內容……

Spring Java 配置進展順利

工程 | Rod Johnson | 2007 年 11 月 05 日 | ...

幾位使用者詢問我們是否致力於 Spring Java 配置,以及它與 Spring 2.5 中引入的 註解配置選項 的關係。答案是肯定的,我們致力於 Java 配置;這兩種方法並非互斥。

這兩種配置方法截然不同:Spring 框架中的 @Autowired 註解使用業務物件中的註解來配置元件,而 Spring Java Config 則採用獨特的方法,將註解外部化到專用的配置類中。這兩種方法都不是唯一正確的方法……

Spring LDAP 1.2 釋出

釋出 | Mattias Arthursson | 2007年10月31日 | ...

親愛的Spring社群,

我們很高興地宣佈 Spring LDAP 1.2 版本釋出。這是一個主要版本,引入了多項功能和錯誤修復。

            下載 | 變更日誌 | 文件 (HTML) | 文件 (PDF) | API

一些更重要變更的摘要

  • SimpleLdapTemplate 和 ParameterizedContextMapper 類現在支援 Java 5 泛型。
  • 客戶端 LDAP 事務。
  • 新增了多個 API 方法,簡化了許多常見任務。

關於 Spring LDAP
Spring LDAP 是一個 Java 庫,基於 Spring 的 JdbcTemplate 模式,用於簡化 LDAP 操作。該框架將使用者從查詢和關閉上下文、遍歷 NamingEnumerations、編碼/解碼值和過濾器等繁重工作中解放出來。

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

除此之外,Spring LDAP 還提供從 NamingExceptions 到映象的、未經檢查的異常層次結構的異常轉換,以及用於處理過濾器、LDAP 路徑和屬性的多個實用工具。

Spring-LDAP 需要 J2SE 1.4 才能執行。從原始碼構建分發二進位制檔案需要 J2SE 1.4 和 javacc。執行示例需要 J2EE 1.4(Servlet 2.3,JSP 1.2)。

從何開始
從上面的連結下載分發包。分發包包含詳盡的 JavaDoc 文件以及完整的參考文件和示例應用程式,說明了使用 Spring LDAP 的不同方式。

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

Mattias Arthursson & Ulrik Sandberg,Spring LDAP 專案團隊

Spring 2.5 RC1 已釋出 - 引入新的配置方法

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

正如一些使用者可能已經注意到的,Spring 2.5 RC1 已於週一釋出,等待您進行測試!Spring 2.5 在許多方面完成了*Spring 2.0 的使命*:為 Java 1.4 和 Java 5 提供最靈活、最*全面的配置模型*。Spring 2.5 專注於對 Java 5 提供特別全面的支援,引入了各種進一步的註解選項。我想借此機會指出本次釋出背後的統一主題。

Spring 2.5 允許進行**便捷的外部化配置**,同時保持其簡潔性。這是基於 Spring 2.0 對 XML 架構名稱空間的支援,Spring 2.5 引入了**新的“context”和“jms”配置名稱空間**。後者是 Spring 配置名稱空間可以提供的增值的一個很好的例子——如果你正在使用 Spring 2.0 風格的訊息驅動物件,絕對值得采用!此外,Spring 還允許**無需 XML 的程式化引導**…

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

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

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

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

檢視所有