Spring Framework Maven Artifacts

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

大眾要求,Spring Framework Maven artifacts 現在已上傳至 Spring Snapshot Maven Repository。 您可以在我之前的文章中找到所有 Spring Portfolio Maven 儲存庫的詳細資訊,但我會在此處重新列印 Spring 快照儲存庫的詳細資訊。

Spring Snapshot Maven Repository 位於 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 提供一流的支援
  • 基於註解的新控制器模型,適用於支援 Servlet 和 Portlet 環境的 Spring MVC
  • 擴展的 SimpleJdbcTemplate 功能,包括對具名 SQL 參數的支援
  • 正式認證的 WebSphere 支援
  • Spring Framework jars 作為開箱即用的 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+ 相容。 例如,在 WebLogic 8.1 或 WebSphere 5.1/6.0 上執行的 Java 1.4 使用者非常歡迎升級到 Spring 2.5。 我們建議在 Java 1.4 上執行時將 backport-util-concurrent jar 放在類別路徑中,這允許 Spring 和您的應用程式從顯著的並發增強中受益。

盡情享受 Spring 2.5,

Juergen Hoeller
Spring Framework 開發負責人

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 視圖,即使在同一個應用程式中也是如此。

* 更新:在考慮了 Spring 社群自 2007 年 Spring Experience 以來的大量回饋後,於 1/11/08 更新了以上願景。 根據這些回饋,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 變體。 它在其託管環境中非常緊密地運作 - 無論是 Servlets 還是 Portlets。 將 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 註解進行註解驅動的事務管理(支援與具有預設 REQUIRED 傳播的 @Stateless EJB 相同的語義)。 我特別感到沮喪的是,比較沒有包括雙方的 JPA(參見下面的第 3 點)。 Spring 2.0 還引入了完整的基於註解的 AspectJ 支援(@Aspect、@Before、@After、@Around)和「刻板印象」註解的概念。 例如,@Repository 註解為直接使用 JPA 或 Hibernate API 的資料存取程式碼(沒有 Spring 的範本)啟用非侵入性異常轉換。 Spring 甚至早在 1.2 版本就提供了註解支援,例如 @ManagedResource,用於將任何 Spring 管理的物件透明地匯出為 JMX MBean。

現在這個問題對我來說是 #1 的主要原因是評論說「需要一段時間」。 作為 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 配置。 例如,此摘錄取自 PetClinic 範例應用程式的 2.5 版本


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

不需要額外的 XML 用於 Web 控制器,因為它們使用註解驅動的依賴注入和註解進行請求映射。 我指出這一點是因為演示文稿特別強調了 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 允許您支援多個部署環境,但需要更多配置。

這個說法實際上是將 Spring 視為一種優勢,但強調其組態上的額外負擔。事實是,任何認真看待測試和敏捷開發的專案都需要支援「多個部署環境」。換句話說,這個特定主題經常被扭曲,好像它只適用於多個正式 (production) 環境。實際上,在每次開發和測試週期中都必須部署到應用程式伺服器,這對敏捷性來說是一個主要的障礙。通常,Spring 使用者會將他們的組態模組化,使得「基礎架構」組態(例如 DataSource、TransactionManager、JMS ConnectionFactory)是獨立的,並且動態屬性是外部化的。由於 Spring 支援基於外部化屬性替換 '${placeholders}',因此包含不同的屬性檔案通常會變成一個透明的問題。

3. EJB with JPA, Spring with 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 也提供了一些專門的實作:WebLogicJtaTransactionManagerWebSphereUowTransactionManagerOC4JJtaTransactionManager。在這些實作之間切換只需要更改這個單一的定義。

除此之外,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 可以輕鬆地支援獨立的 JTA 提供者,如 Atomikos 和 JOTM。當然,Spring 的交易管理器設定需要配置單一 bean 定義,但這確實是一次性的成本 - 而且非常值得。

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

無狀態服務層的優點已經被廣泛地確立為最佳實踐,而 Spring 也擁抱了這一點。然而,Spring 確實提供了單例 (singleton) 以外的其他 scopes。Spring 的 "prototype" scope 為每次注入或查找啟用一個不同的實例,而 Spring 2.0 引入了 web scopes:"request" 和 "session"。Scoping 機制本身甚至是可擴展的;可以定義一個自定義 scope 並將其映射到對話 (conversation) 的概念。Spring 還支援使用 CommonsPoolTargetSource 的簡單物件池,但物件池很少是狀態管理的最佳解決方案。

更重要的是,Spring 透過 Spring Web Flow 為 web 應用程式提供了非常強大、高度可配置的狀態管理。在那裡,對話狀態是透明地管理的,與此簡報聲稱的開發人員必須直接與 HTTP Session 互動以管理 Spring 應用程式中的狀態相反。此外,儲存庫組態是可插拔的,因此可以使用各種策略來物理儲存狀態(session、client、backend cache 等)。最後,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' 標誌,所以我需要為您重新錄製該 session :(. 我目前正在旅行,但我會盡力做到這一點並盡快提供。

好消息是,在此期間您無需錯過任何內容。我寫了一篇關於 "Spring in Production" 的 白皮書,其中涵蓋了網路研討會的內容以及更多内容……

Spring Java Configuration Moving Ahead

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

一些使用者詢問我們是否致力於 Spring Java Configuration,以及它如何與 Spring 2.5 中引入的 註解配置選項 相結合。答案是肯定的,我們致力於 Java Config;並且這兩種方法並非互斥。

這兩種配置方法截然不同:Spring Framework 中的 @Autowired 註解使用業務物件中的註解來配置組件,而 Spring Java Config 採用了一種獨特的方法,即在專用的配置類別中外部化註解。這兩種方法都不是絕對正確的……

Spring LDAP 1.2 Released

發布 | Mattias Arthursson | 2007 年 10 月 31 日 | ...

親愛的 Spring 社群,

我們很高興地宣布 Spring LDAP 1.2 版本的發布。這是一個主要版本,引入了許多功能和錯誤修復。

            Download | ChangeLog | Documentation (HTML) | Documentation (PDF) | API

更重要變更的摘要

  • 現在,SimpleLdapTemplate 和 ParameterizedContextMapper 類別提供了 Java 5 Generics 支援。
  • Client-side LDAP transactions.
  • Several additional API methods, simplifying a number of common tasks.

About Spring LDAP
Spring LDAP 是一個 Java 程式庫,用於簡化 LDAP 操作,基於 Spring 的 JdbcTemplate 的模式。該框架使用戶免於查找和關閉內容、迴圈遍歷 NamingEnumerations、編碼/解碼值和篩選器等負擔。

LdapTemplate 類別封裝了傳統 LDAP 程式設計中涉及的所有基礎工作,例如建立、迴圈遍歷 NamingEnumerations、處理 Exceptions 和清理資源。這使得程式設計師可以處理重要的內容 - 在哪裡找到資料(DN 和篩選器)以及如何處理它(映射到和從網域物件、綁定、修改、取消綁定等),就像 JdbcTemplate 免除了程式設計師除實際 SQL 之外的所有內容以及資料如何映射到網域模型。

除此之外,Spring LDAP 還提供從 NamingExceptions 到鏡像、未檢查的 Exception 階層的 Exception 轉換,以及用於處理篩選器、LDAP 路徑和 Attributes 的多種實用程式。

Spring-LDAP 需要 J2SE 1.4 才能運行。 需要 J2SE 1.4 和 javacc 才能從來源建置發佈二進位檔案。 需要 J2EE 1.4 (Servlet 2.3, JSP 1.2) 才能運行該範例。

Where to start
從上面的連結下載發佈版。發佈版包含廣泛的 JavaDoc 文件以及完整的參考文件和一個示例應用程式,說明了使用 Spring LDAP 的不同方式。

Home
Spring LDAP 的永久首頁位於 http://www.springframework.org/ldap

Mattias Arthursson & Ulrik Sandberg, Spring LDAP Project Team

Spring 2.5 RC1 is here - introducing new configuration approaches

工程 | 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 Schema 命名空間的支援之上,Spring 2.5 引入了新的 "context" 和 "jms" 配置命名空間。 後者是一個特別好的例子,說明 Spring 配置命名空間可以提供的附加價值 - 如果您正在使用 Spring 2.0 風格的訊息驅動物件,絕對值得採用! 此外,Spring 也允許完全不涉及 XML 的程式化引導啟動

取得 Spring 電子報

隨時掌握 Spring 電子報的最新資訊

訂閱

領先一步

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

了解更多

取得支援

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

了解更多

即將到來的活動

查看 Spring 社群中所有即將到來的活動。

查看全部