我們對 JCP 的態度
正如我之前所釋出的,Interface21 正在參與 Java EE 6 的工作,我們中的一些人,包括我本人、Juergen Hoeller、Keith Donald 和 Rob Harrop,將參與一些專家組。
這意味著我們將更廣泛地參與 JCP。我們尊重 JCP 的保密規定和其他條款,因此不會談論任何非公開的事情。然而,我想談談我們參與 JCP 的目標以及我們將帶來的基本方法。當然,我們只是眾多公司和個人中的一員,所以我們將只會……
Spring Batch 1.0 M2 釋出
我們很高興宣佈 Spring Batch 1.0 M2 已釋出!此里程碑版本引入了:
- 一套可用於配置和構建批處理應用程式的核心 API。
- 用於在單個虛擬機器中管理和監控多步作業的執行環境和實用工具。
- 將框架打包成三個部分:基礎設施、核心和執行。
我們期望在….
新的 bean() 切點
Spring 2.5 提供了一個新的切點指示符 -- bean(),它允許選擇與名稱模式匹配的 bean 中的連線點。現在可以結合自動代理機制和 Spring-AspectJ 整合來選擇特定 bean,即使存在多個同類型 bean 也是如此。早些時候,可以使用 BeanNameAutoProxyCreator 實現類似的結果;然而,該機制不適用於 Schema 風格或 @AspectJ 切面。
除了選擇特定 bean 外,如果您遵循適當的命名約定,此切點指示符還提供了兩種有趣的 bean 選擇方式:
- 選擇 bean 的垂直切片:如果您遵循 bean 名稱中包含表示其業務角色的字串的約定,bean() 切點可以根據其業務角色選擇 bean。例如,如果 bean 名稱以表示其業務功能的字串開頭,您可以使用 bean(account*) 切點選擇所有會計相關 bean,例如 accountRepository、accountService 和 accountController。
- 選擇 bean 的水平切片:如果您遵循 bean 名稱中包含表示其架構角色的字串的約定,bean() 切點可以根據其架構角色選擇 bean。例如,如果 bean 名稱以表示其架構角色的字串結尾,您可以使用 bean(*Repository) 選擇所有儲存庫 bean。沒有 bean() 切點,您必須依賴包結構或基於型別的切點,這有時可能過於嚴格。

圖 1:使用 bean() 切點根據 bean 名稱選擇水平和垂直切片
此切點表示 AspectJ 切點表示式語言在 Spring 中的特定擴充套件,因此僅在基於 Spring 的應用程式中有用。名稱模式遵循 AspectJ 的名稱模式匹配規則,其中 '*' 是唯一允許的萬用字元。下表顯示了一些示例切點及其選擇的 bean。切點 | 選擇的連線點 |
---|---|
bean(accountRepository) | 名為 "accountRepository" 的 bean |
!bean(accountRepository) | 除 "accountRepository" bean 外的任何 bean |
bean(*) | 任何 bean |
bean(account*) | 名稱以 "account" 開頭的任何 bean |
bean(*Repository) | 名稱以 "Repository" 結尾的任何 bean |
bean(accounting/showaccount) | 名為 accounting/showaccount 的 bean(例如,處理該 URL 的控制器) |
bean(accounting/*) | 名稱以 "accounting/" 開頭的任何 bean(例如,處理會計相關 URL 的任何控制器) |
bean(accounting/*/edit) | 名稱以 "accounting/" 開頭且以 "/edit" 結尾的任何 bean(例如,處理會計相關編輯操作功能的任何控制器) |
bean(*dataSource) || bean(*DataSource) | 名稱以 "dataSource" 或 "DataSource" 結尾的任何 bean |
bean(service:name=monitoring) | 名為 "service:name=monitoring" 的 bean |
更多關於開源的廢話
在標題恰當的關於 Interface21 的廢話一文中,一位 SourceLabs 員工不同意我關於提交許可權對於提供可靠開源支援是必需的說法。
在回覆之前:我想再次完全澄清我在上一篇部落格中已經說過但似乎被某些人誤解的一點:Interface21 無意阻止其他人從 Spring 賺錢。我們的歷史記錄證明了這一點。我們歡迎其他人撰寫關於 Spring 的文章並提供 Spring 服務。或者基於 Spring 開發產品,例如 Matt Raible 的 AppFuse。我們祝他們成功。Spring 之所以取得部分成就,是因為……
回覆關於開源的廢話
我幾個月前關於開源商業模式的部落格似乎引起了共鳴。我收到了許多積極的回覆,並引發了一個名為 "How Software is Built" 的網站的採訪請求。我的採訪內容在這裡。
最終,OpenLogic 的某人發表了一篇有趣的回覆。Bryan Noll 在回覆我的部落格時留下了一些值得正式回應的評論。
首先,我認為您斷言當那些對特定專案沒有真正投入的人為其提供支援時,這對專案或整個開源領域來說是不健康的,這是一個有趣的觀點……一個我以前從未聽過的觀點。我認為它有足夠的有效性,足以讓像我們這樣的公司考慮並認真審查我們對我們支援的開源專案的責任。在我看來,這種審查的結果將是 OpenLogic 為了減輕您提出的潛在擔憂而制定的一個可證明的政策。我肯定不知道那具體會是什麼,所以此時請允許我含糊其辭。不過,這恰好與我對於您所說的一些問題相吻合。我認為找到這樣一種“可證明的政策”相當簡單。OpenLogic 需要明白 Stormy 的帖子中的開場白“從事開源軟體開發的開發人員通常有薪水很高的日常工作……所以他們免費從事開源軟體開發,並在白天為高薪編寫程式碼”在很大程度上是錯誤的,需要明白他們希望從中獲利的開源軟體源自何處,與適當的夥伴合作,並設定一個能夠提供真正支援的價格點。另一種選擇是停止聲稱提供企業支援,並明確所提供的只是某種隨叫隨到的開發協助,不保證能夠解決關鍵問題。這讓我回到了為何我對 Stormy 的帖子如此強烈地想要對其進行解構。
我將聚合模式視為超市式的商業模式。當我在超市購物時,我期望他們會從我購買的所有商品中抽取(少量)提成,以回報他們與許多供應商打交道並將所有商品彙集起來……
Maven 工件 (09/2007)
到目前為止,Spring Portfolio 的 Maven 工件,特別是快照版本,建立不一致且分散在各個位置。在過去幾周,我們一直在努力使專案在建立和上傳這些工件方面更加一致。
Maven 倉庫
Spring Portfolio 中 Maven 支援最實用的改進之一是使用一致的倉庫位置。根據您對程式碼的熟練程度,有三種不同的倉庫。
釋出版本倉庫
對於任何最終釋出版本(例如 Spring 2.5、Spring Web Flow 2.0 等),該版本的 Maven 工件將上傳到 Maven Central 倉庫(http://repo1.maven.org/maven2)。使用此倉庫無需您額外操作,因為 Maven 會自動在此查詢工件。
此倉庫中的工件確實遵循預期的倉庫行為,不會(也無法)被刪除。
里程碑版本倉庫
對於任何里程碑版本(例如 Spring 2.5-RC1、Spring Web Flow 2.0-M2 等),該版本的 Maven 工件將上傳到 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>
此倉庫中的工件不遵循預期的倉庫行為,並且會定期刪除。最終版本釋出時(例如 Spring 2.6、Spring Web Flow 2.1 等),同一工件所有先前版本的里程碑版本都將被刪除。例如,當 Spring 2.6 釋出時,Spring 2.5 的里程碑版本將被刪除,而 Spring 2.6 的里程碑版本將保留。
快照版本倉庫
對於任何快照構建(例如 Spring 2.5-SNAPSHOT、Spring Web Flow 2.0-SNAPSHOT 等),該構建的 Maven 工件將上傳到 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>
此倉庫中的工件不遵循預期的倉庫行為,並且會定期刪除。給定工件至少保留最近的 10 個快照構建版本。如果一個工件從發行版中移除,其快照構建版本將立即刪除。在里程碑或最終版本釋出時,同一工件的所有快照版本都將被刪除,併為下一個版本建立新的快照。
倉庫瀏覽
里程碑和快照倉庫都託管在 亞馬遜 S3 服務上,因此目錄結構不可直接閱讀。要以可讀格式檢視倉庫,請使用 S3Browse 工具。
- 里程碑版本倉庫:http://s3browse.com/explore/maven.springframework.org/milestone
- 快照版本倉庫:http://s3browse.com/explore/maven.springframework.org/snapshot
這些 URL 僅供人工檢視。如果將它們用作 POM 中的 URL,將會遇到錯誤。
工件原始碼
另一個重要的改進是為所有版本添加了原始碼工件。您會注意到,在里程碑倉庫中,所有工件都部署了原始碼。將來所有最終釋出版本也將如此。具體來說,從 Spring 2.5 版本開始,除了合併的 Spring 原始碼外,每個模組也將有一個原始碼工件。
Spring 快照版本
最後一個改進目前尚未完成;Spring 的每晚快照版本。很高興地告訴您,這即將完成。我仍在解決與 Maven Ant Tasks 相關的最後一些小問題,但這最終將會出現,屆時我會再次宣佈。同樣,您可以預期此功能最終會擴充套件到所有其他基於 ANT 的 Spring Portfolio 專案,以便所有專案都將建立 Maven 快照版本和里程碑版本。
Spring Framework 2.1 變成 Spring Framework 2.5!
我的第一篇部落格文章——這是一個多麼重大的公告 :-)
在釋出了一系列 Spring 2.1 里程碑版本後,我們回顧了我們引入的全部功能:
- 全面的 Java 6 和 Java EE 5 支援(JDBC 4.0, JTA 1.1, JavaMail 1.4, JAX-WS 2.0 等)
- 功能齊全的註解驅動的依賴注入(包括對“限定符”註解的支援)
- 支援在類路徑中進行元件掃描(自動檢測帶有註解的類)
- AspectJ 切點表示式中的 bean 名稱切點元素
- 內建支援 AspectJ 載入時織入(基於 Spring 的 LoadTimeWeaver 抽象)
- 進一步的 XML 配置名稱空間(“context”,“jms”),以提供最大便利
- 擴充套件的 SimpleJdbcTemplate 功能(支援命名引數等)
- 官方認證的 WebSphere 支援(支援 WebSphere 6 UOWManager 功能等)
- Spring framework jar 包開箱即用,為 OSGi 相容的 bundles
- Spring ApplicationContext 可以部署為 JCA RAR 檔案(用於無頭應用程式模組)
- JCA 1.5 訊息端點管理(用於 Spring 管理的 JMS 和 CCI 訊息監聽器)
- 完全修訂的整合測試框架(支援 JUnit 4 和 TestNG)
我們得出的結論是,這 顯著超出了我們最初對 Spring 2.1 的計劃。版本號 2.1(用於 里程碑版本) 未能反映此主要版本中功能的重要性與全面性。
因此,我很高興宣佈 2.1 里程碑版本將無縫 轉變為即將到來的主要版本 Spring Framework 2.5! Spring 2.5 計劃於……釋出最終版本。
Spring Framework 2.1 M4 釋出
親愛的 Spring 社群:
我很高興宣佈 Spring Framework 2.1 M4 已釋出!此里程碑版本引入了:
- 支援使用“限定符”註解選擇特定的 @Autowired 匹配;
- 支援 JUnit4 的下一代 Spring TestContext Framework;
- 用於儲存過程呼叫的 SimpleJdbcCall 操作物件;
- 支援對指令碼物件(Groovy, JRuby, BeanShell)的自動注入;
- 在 Spring Web MVC 中支援 Tiles2 檢視。

這讓我想到了一些更令人興奮的訊息……
我們一直在回顧我們在最近的 2.1 里程碑版本中引入的全部功能:
- 全面的 Java 6 和 Java EE 5 支援
- 功能齊全的註解驅動的依賴注入
- 支援在類路徑中進行元件掃描
- AspectJ 切點表示式中的 "beanName" 切點元素
- 內建支援 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 在國會證詞中被提及
Core Capital Partners 的風險投資家兼創始人 Jonathan Silver 於週四在國會作證,反對針對風險投資公司的擬議稅率改革。他的論點之一是,風險投資公司在美國各地創造就業機會。
下一個重要業務將從何而來?真相是,沒有人知道,這也是為什麼風險投資家在各地、在所有五十個州尋找這些機會的原因。這就是為什麼風險投資基金支援紐約市的 Music Nation、密歇根州安娜堡的 Incept Biosystems、佛羅里達州西墨爾本的 Interface21、馬薩諸塞州韋斯特伯勒的 Boston Power 以及德克薩斯州聖安東尼奧的 Click Forensics。
實際上,我們的總部正在遷往加利福尼亞州聖馬特奧。像許多軟體供應商一樣,我們相信矽谷是實現我們潛力的最佳地點。我們合作伙伴的最大集中地在這裡,而且這裡是招聘軟體行業高管人才的好地方。然而,Silver 的觀點仍然有效。我們確實正在佛羅里達州創造就業機會——我們的網路團隊就設在那裡,目前正透過 Spring Web Flow 取得巨大成就……