Spring 對 OSGi 的支援勢頭正勁

工程 | Adrian Colyer | 2006 年 9 月 7 日 | ...

這始於一件小事。我當時憑直覺覺得 Spring 和 OSGi 應該能很好地結合在一起。其想法是,透過使 Spring 應用能夠部署在 OSGi 執行時環境中,我們可以為 Spring 應用帶來更好的模組化、版本控制、執行時部署和更新能力。這是一個我從未真正宣傳過的專案;我只是開始嘗試、與一些人交流並編寫一些早期原型程式碼。

結果表明,有很多人似乎對 Spring 和 OSGi 感興趣。我們正與來自 BEA、Oracle、IBM、Eclipse、OSGi Alliance 和其他幾家的代表合作,以構建一個共享模型,探討 Spring 對 OSGi 的支援應該是什麼樣子,以及如何才能輕鬆地在 OSGi 執行時上構建企業應用。該規範的最新版本附在 Spring JIRA 問題 1802 中。這裡是規範文字的直接連結...

Spring 2.0 中的 Before 通知

工程 | Ben Hale | 2006 年 9 月 5 日 | ...

各位可能都知道,Spring 2.0 的一個重大改進是增加了 AspectJ 切入點語言以及整體上更好地與 AspectJ 整合。雖然我認為大家相信這從長遠來看會帶來巨大的好處,但也導致了一些問題。我們發現 Spring AOP 一直以來都有一些行為,而 AspectJ 從未有過。

出現的一個大問題是 Before 通知(advice)的行為。如果你在 Spring 1.x 中使用過 Spring AOP,你可能知道 Spring 允許你在引數傳遞給目標之前修改引數值……

Spring 標準化程度不斷提高

工程 | Steven Schuurman | 2006 年 8 月 29 日 | ...

Spring - 長期存在 我每天拜訪很多客戶,和更多人交流。這包括現有的 Interface21 客戶以及對我們在歐洲的產品和服務感興趣的公司。我注意到在我的談話中有一個反覆出現的主題:Spring 已經來了,並且會長期存在。

在過去的一年裡,我目睹了高層決策,這些決策使得 Spring 在領先的企業級 Java 開發公司中得到了全面標準化。就在兩週前,我問了我的一位客戶——歐洲最大的 Java 部門經理之一……

建立 Spring 2.0 名稱空間?使用 Spring 的 AbstractBeanDefintionParser 層次結構。

工程 | Ben Hale | 2006 年 8 月 28 日 | ...

最近我似乎一直在專注於建立 Spring XML 名稱空間。在 XSD 和 Spring 方面,為了找到一個好的解析器建立模式,經歷了大量的嘗試和錯誤。我遇到的最大困惑之一就是 AbstractBeanDefinitionParser 的層次結構。目前這方面的文件還不是特別完善(但 JIRA 上有相關問題,所以在 GA 之前會修復),所以我將向您介紹您的選擇、它們的用途以及如何使用它們。

AbstractBeanDefinitionParser 選擇

Spring 提供了三種主要的 BeanDefinitionParser 來幫助您解析 XML 名稱空間。

我將從最具體的開始,逐步介紹到最一般的,以展示如何在需要時獲得更多能力。如果您想跳過示例直接檢視摘要,請檢視此處...

Spring LDAP 1.1 釋出

釋出 | Mattias Arthursson | 2006 年 8 月 28 日 | ...

親愛的 Spring 社群成員:

我們很高興地宣佈 Spring LDAP 1.1 版本已釋出。這是該庫作為 Spring Framework 子專案釋出的第一個版本。下載 | 文件 | API

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

LdapTemplate 類封裝了傳統 LDAP 程式設計中涉及的所有底層工作,例如建立、遍歷 NamingEnumerations、處理異常和清理資源。這使得程式設計師可以專注於重要的事情——在哪裡找到資料(DNs 和過濾器)以及如何處理它(對映到領域物件和從領域物件對映、繫結、修改、解除繫結等),這就像 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 專案團隊

驗證邏輯(和我的第一篇文章!)

工程 | Colin Yates | 2006 年 8 月 25 日 | ...

大家好!

這是我上個月加入 Interface21 以來發表的第一篇文章。我的上一個部落格現已正式棄用,我不會再更新了。

那麼,我的第一篇文章的主題是什麼(除了自我介紹)呢?  驗證邏輯。  這不會是關於如何在 Spring 框架中執行驗證的詳細講解,而是討論一個我特別煩惱的問題 :)

具體來說,我想討論一下驗證邏輯中應該包含什麼。  這似乎是一個無需多想的答案:“驗證指定資料的邏輯”。  好的,這*確實*是顯而易見的,但請繼續閱讀 :)。如您所知,Spring 框架透過 Errors Validator 介面為您的驗證提供了很好的抽象層。  特別是 Validator,您可以在其中將業務特定的驗證規則應用於已填充的領域物件。  Spring 出色的繫結支援負責更新您的領域模型……

Steven 的 biz.blog 有新家了

工程 | Steven Schuurman | 2006 年 8 月 13 日 | ...

大家好,

這只是一個快速的條目,告訴大家我已正式將我的 biz.blog 搬遷到這裡,也就是我們新的 Interface21 團隊部落格。  我很高興這個群組部落格能作為 Interface21 的聲音。  瞭解我的人知道,你會期待一種不同的視角

我有一些儲存的草稿正在處理中。請留意即將釋出的、深入探討 Interface21 業務方面的新文章……

在此之前,Steven 敬上

Spring 2.0 RC3 釋出

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

親愛的 Spring 社群成員:

我們很高興地宣佈 Spring 2.0 RC3 已釋出。  下載 | 文件 | 更新日誌

這個第三個候選版本包含了基於我們收到的前幾個候選版本的寶貴使用者反饋進行的許多改進。  有了這個版本,Spring 2.0 正式版就近在眼前了。

最重要的改進包括

  • 對於 default-lazy-init="true",Spring 1.2 相容性已恢復,特別是在按型別檢測特殊 bean(如 PropertyPlaceholderConfigurer)方面。此外,懶載入(lazy class loading)已被重寫,以允許在類名等中使用佔位符。對於特殊的 ApplicationContext,仍然可以強制執行嚴格的懶載入。
  • 基於 @Repository 註解的持久化異常轉換現在也可用於 Hibernate3、JDO 和 TopLink,而不僅僅是 JPA。  異常轉換現在儘可能地基於底層 ORM 工具的原生異常,只有明確指定時才應用 Spring 特定的 SQLException 轉換。
  • 在我們的 JMS 支援中,DefaultMessageListenerContainer 改進了資源處理(也適用於 JBoss 4.0),並且能夠從斷開的連線或目標中恢復。JMS 資源的快取現在完全可配置,為 XA 和非 XA 場景提供了合理的預設值。此外,JmsTemplate 在 JTA 事務中重用快取的 JMS 資源。
  • Servlet 和 Portlet Web MVC 現在支援一個通用的 WebRequestInterceptor 抽象,這使得 View 攔截器中的 Open Session/EntityManager/等可以在 Servlet 和 Portlet 環境中重用。因此,所有此類 Portlet 特定的攔截器已被新的通用攔截器(如 OpenSessionInViewInterceptor)取代。

當然,還有許多進一步的細節改進。請參閱更新日誌檔案(以及 JIRA 中的更新日誌)瞭解詳細資訊。

如果您在使用 RC3 過程中遇到任何剩餘問題,請告知我們。  Spring 2.0 正式版現在近在眼前了。

Juergen Hoeller,
Spring Framework 開發負責人

訊息驅動的 POJO!

工程 | Mark Fisher | 2006 年 8 月 11 日 | ...

在 Spring 2.0 的所有新特性和改進中,我必須承認訊息驅動的 POJO 是我個人最喜歡的之一。我感覺很多其他 Spring 使用者也會有同樣的感受。

這裡我提供一個快速介紹。還有很多內容可以展示,我會在後續文章中繼續介紹。但就目前而言——這應該能為你提供足夠的資訊,讓你開始使用真正基於 POJO 的非同步 JMS!我希望你和我一樣對此感到興奮 ;)

前提條件

您需要在類路徑中包含以下 JAR 檔案。我也列出了我正在使用的版本(任何 spring-2.x 版本都可以。事實上,我幾分鐘前剛把 RC3 放進去)

  • activemq-core-3.2.2.jar
  • concurrent-1.3.4.jar
  • geronimo-spec-j2ee-managment-1.0-rc4.jar
  • commmons-logging-1.0.4.jar
  • log4j-1.2.9.jar
  • jms-1.1.jar
  • spring-2.0-rc3.jar

設定環境

首先,我們需要設定環境。我將使用 ActiveMQ,但更換提供商的影響將僅限於修改此檔案。我將此檔案命名為 "shared-context.xml",因為您很快就會看到,我將為 JMS 通訊的雙方匯入這些 bean 定義。以下是“共享”的 bean 定義:連線工廠和兩個佇列(一個用於請求,一個用於回覆)。


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
                           http://www.springframework.org/schema/beans/spring-beans.xsd">
	
    <bean id="requestQueue" class="org.activemq.message.ActiveMQQueue">
        <constructor-arg value="requestQueue"/>
    </bean>
 
    <bean id="replyQueue" class="org.activemq.message.ActiveMQQueue">
        <constructor-arg value="replyQueue…

使用 Spring 2.0 和 AspectJ 簡化企業應用

工程 | Adrian Colyer | 2006 年 8 月 10 日 | ...

我為 InfoQ 網站撰寫的一篇文章剛剛上線了:使用 Spring 2.0 和 AspectJ 簡化企業應用

我聽到很多人說“AOP 太難了”,或者“AOP 讓事情變得太複雜了”。從某種意義上說,這篇文章就是為了反駁這些觀點而寫的(因此標題是“簡化企業應用開發”)。我的意思是,AOP 的核心要點在於,你可以透過引入切面(aspects)再次賦予每個模組單一職責,從而簡化那些變得複雜和糾纏不清的軟體實現。當然,對於一些人來說……

獲取 Spring 電子報

訂閱 Spring 電子報,保持聯絡

訂閱

領先一步

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

瞭解更多

獲取支援

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

瞭解更多

近期活動

檢視 Spring 社群的所有近期活動。

檢視全部