快人一步
VMware 提供培訓和認證,助力您的快速進步。
瞭解更多經過十多個月的開發和近 900 項獨立改進,Spring Roo 1.1.0 已經發布(點選此處下載)!恰逢 Spring Roo 1.1.0 GA 版本釋出,Google Web Toolkit、SpringSource Tool Suite、AspectJ 和 AJDT 團隊也完成了相應的 GA 版本釋出,以便您可以愉快地使用這些工具的最新版本協同工作。
Spring Roo 1.1.0 中引入瞭如此多的新功能,以至於很難決定重點介紹哪些。不過,讓我們簡要地瀏覽一下我們為您增加的一些好東西,讓您的 Java 程式設計更加愉快。
現在可以對現有的關係型資料庫進行逆向工程,並自動建立帶有相應欄位的 Roo 實體。但是使用 JPA 工具不是早就可能實現這一點了嗎?是的,當然可以。關鍵區別在於 Roo 的資料庫逆向工程是增量式的。這意味著當 Roo 對資料庫進行逆向工程時,它會將發現的所有欄位放入型別間宣告 (ITD) 中。這與 Roo 的其他部分保持一致,並允許 Roo 輕鬆實現逆向工程實體的往返維護。特別是,您可以反覆重新內省資料庫以識別任何更改,同時確保您在 .java 原始檔中編寫的任何程式碼都得到保留。Roo 甚至會刪除不再存在的實體(除非您要求 Roo 不要刪除),並且 Roo 會自動處理複雜情況,例如複合主鍵(包括識別符號類的建立和維護)。最重要的是,Roo 的逆向工程功能無需詢問您任何問題即可完成。這項新功能將 Roo 的易用性體驗帶到了一個直到現在一直令人厭煩、耗時且產生凌亂的 .java 檔案(無法提供增量重新整理功能)的任務中。
增量式逆向工程是我們有史以來收到的針對 Roo 的最受歡迎的特性請求,獲得了 129 票社群投票。在 1.1.0 的開發週期中,它經過了大量的測試,我們發現社群的反饋非常寶貴。我們甚至有人成功地對包含超過 440 張表的 Schema 進行了逆向工程,並且我們調整了 Roo 以在此類情況下提供穩定的效能。
要建立一個新專案並對關係型資料庫進行逆向工程,只需要三個無需提問的命令(這些命令都提供了 Roo 通常的 Tab 輔助功能,以節省您的輸入):
project --topLevelPackage com.foo.rootest
persistence setup --provider HIBERNATE --database POSTGRES --userName rootest --password rootest
database reverse engineer --package ~.domain --schema dbretest
當然,您可以隨意重複“database reverse engineer”命令,Roo 將會仔細地只更新您的實體,只包含對 Schema 發生的更改。如果重複此命令,您無需重複“package”或“schema”選項,因為 Roo 會記住您首次命令中的這些設定。
關於 Roo 連線您的資料庫進行內省所需的 JDBC 驅動程式,我們在 Roo 發行版中捆綁了一些常見的生產環境開源資料庫(例如 Postgres、MySql)的驅動程式。如果您有其他資料庫,只需輸入 "script install-jdbc-drivers.roo" 並重新啟動 Roo,即可訪問 Oracle、Microsoft SQL Server、HSQLDB、H2、Derby 等資料庫。
我們吸取了您在 Roo 1.0 中的反饋,並顯著增強了 Spring Roo 1.1.0 中可用的 Spring MVC 功能。例如,現在可以自動往返處理 JSPX 檔案。這意味著您現在可以隨時以任何方式編輯一個腳手架生成的 JSPX 檔案,而 Roo 會自動檢測您所做的更改。如果 Roo 由於某種原因需要編輯該檔案(例如您向實體添加了一個新欄位、刪除了一個欄位等),Roo 將自動安全地將其更改與您的任何更改合併。如果您對給定的 HTML 元素進行了任何編輯,Roo 將始終保留您的更改,並且您的更改將優先——正如您所期望的那樣。
與 JSPX 往返支援相關的一個改進是更加優雅地使用了標籤庫來封裝標記建立。這意味著 Roo 1.0 中一個 200 行的 JSPX 檔案現在在 Roo 1.1.0 中只有 12 行。重複的標記已經被移到基於 JSPX 的標籤中,允許您輕鬆進行影響應用程式中所有頁面的編輯。因此,您現在擁有更輕鬆的維護、自動往返處理以及簡潔、聚焦、整潔的 JSPX 頁面!您可以在我們的參考指南的 Web MVC 外掛部分 閱讀更多關於這一切如何工作的資訊。
Spring MVC 支援的其他增強功能包括取消了 URL 重寫過濾器,因為此功能現已內建到 Spring 本身中。現在可以使用 "web mvc install language" 命令從第三方外掛安裝額外的本地化包。這非常有用,因為它允許外部開發者維護本地化(我們甚至建立了一個外掛建立命令,以便輕鬆地生成這些本地化外掛)。
Spring MVC 腳手架現在還支援嵌入來自 16 個社交媒體網站的內容。只需使用新的 "web mvc embed" 命令即可輕鬆新增來自 YouTube、Google Video、Vimeo、Viddler、Screenr、UStream、LiveStream、Flickr、Picasa、Google Presentations、Scribd、SlideShare、Google Maps、Google Wave、Twitter 和 Wikinvest 等網站的內容。
這些對 Spring MVC 功能的廣泛改進的最後一部分是自動 JSON REST 支援。要檢視實際效果,請執行“script clinic.roo”命令,然後執行“json all”命令,使用 Web UI 建立一個所有者,然後使用此命令列出所有所有者:curl -v -H 'Accept: application/json' -X GET https://:8080/petclinic/owners/
。
我們於 2009 年底開始與 Google 合作,我們的工程團隊一直在緊密合作,以提供一套整合的開發者技術。在 2010 年 5 月的Google I/O 第一天主題演講中,我們展示了我們在 Spring Roo 和 Google Web Toolkit 互操作性方面的早期工作。我們持續增強這種互操作性,現在您可以使用 Roo 構建完整的 GWT 應用程式,這些應用程式使用了最新的 GWT 2.1 功能,例如 RequestFactory、MVP 框架、資料繫結元件等。
與這些功能相關的是 SpringSource Tool Suite 2.5.0 中新的 Google 外掛支援。SpringSource Tool Suite 不僅擁有廣泛的 Spring Roo 1.1.0 支援(例如嵌入式 Roo shell),還透過包含 Google Plugin for Eclipse 提供了開箱即用的 Google Web Toolkit 開發支援。
您可以透過使用我們的 expenses 示例來嘗試最新的 GWT 支援。您可以在 Spring Roo 下載包的 /samples 目錄中找到它。或者您可以簡單地建立專案並執行它,透過以下命令:
mkdir expenses
cd expenses
roo
roo> script expenses.roo
roo> quit
mvn gwt:run
同樣作為前述與 Google 合作的一部分,我們確保 Roo 應用程式可以構建並部署到 Google App Engine。GAE 提供了一種可擴充套件的應用構建方法,幷包含諸如免費使用配額和Google App Engine for Business等選項。
SpringSource Tool Suite 也進行了一些增強,以更好地支援 Roo 建立的 Google App Engine 專案。例如,STS 管理 Data Nucleus 1 enhancer 外掛的生命週期,該外掛對於 GAE 持久化是必需的。所有這些都與內建的 m2eclipse 支援整合,m2eclipse 是在 STS 等基於 Eclipse 的 IDE 中管理 Roo 專案的典型方式。
您可以使用 expenses-gae.roo 示例指令碼來試用最新的 GAE 支援。您同樣可以在 Roo 的 /samples 發行版目錄中找到它。在即將釋出的 Roo 1.1.1 中,您會看到我們對 GAE 支援的進一步改進。
Apache Solr 是一個基於 Apache Lucene 的搜尋伺服器。Solr 允許您擁有一個專用的搜尋伺服器,對您的物件進行索引並透過 REST API 查詢它們(也支援 JSONP)。
Roo 1.1.0 增加了 Solr 整合,確保每當實體被建立、更新或刪除時,Solr 搜尋伺服器都會自動收到通知。它還為您的實體添加了各種與 Solr 相關的便捷方法,例如一個 search(String)
方法,該方法會自動將自由文字搜尋查詢傳送到您的 Solr 伺服器並定位匹配的實體。透過 Roo ITD,還會向實體新增其他類似的搜尋和索引管理相關方法。
要了解如何設定您的 Solr 伺服器並在基於 Roo 的應用程式中使用它,只需訪問參考指南的 Solr 部分。
JavaScript Object Notation (JSON) 是一種具有吸引力的序列化格式,原因眾多,例如其最佳化的瀏覽器“eval”支援、輕量級人類可讀編碼格式以及廣泛的跨平臺庫支援。
在 Roo 1.1.0 中,我們添加了支援,允許任何 Java 物件輕鬆地轉換為 JSON 表示形式或從 JSON 表示形式轉換。透過 Roo ITD 自動管理新方法,例如 toJson()
、fromJson(String)
以及與陣列相關的 JSON 處理方法。只需在您的 Java 類中新增 @RooJson 註解,您就會自動獲得此支援。
大多數 Java 開發者都經歷過維護 java.io.Serializable 類中 serialVersionUID
的繁瑣任務。
使用 Roo 1.1.0,您無需擔心序列化警告。只需在您的 Java 類上新增 @RooSerializable 註解,然後就不用管了。Roo 將為您實現 Serializable 介面,並且自動為您維護版本 UID。
自然,我們緊跟最新的庫版本,因此您的基於 Roo 的專案始終能夠訪問最新的功能和錯誤修復。基於 Roo 的專案現在預設使用新版本的:
我們持續改進易用性,旨在讓您的開發變得有趣且輕鬆。我們最新的一些易用性增強功能包括:
Roo 1.0 和 1.1.0 之間一個重大的(但很大程度上不易察覺的)變化是過渡到 OSGi 基礎。我們使用 Apache Felix 作為我們的 OSGi 框架,並結合 服務元件執行時 (SCR) 進行元件管理,以及 OSGi Bundle 倉庫 (OBR) 進行 Bundle 解析。發生這些關鍵變化是為了確保 Roo 的外掛基礎設施能夠基於一個模組化、經過驗證、可遠端解析依賴的 classpath 管理模型。Eclipse 等現代 IDE 也構建在 OSGi 之上,因此這種工具模組化和可擴充套件性的方法已經非常成熟。
與此變化相關的是,我們需要“封裝”Roo 自身執行所需的許多依賴項。因此,我們建立了一個封裝模組來滿足此需求,同時也為 Roo 外掛開發者提供了一個示例技術。
對於那些有興趣深入研究 Roo OSGi 內部機制的人,可以透過輸入“osgi”並按 TAB 鍵進行互動式操作。Roo 中現在包含許多新的 OSGi 命令。其中大多數對外掛開發者更感興趣,而不是普通 Roo 使用者。您甚至可以透過輸入 "osgi framework command" 然後輸入普通的 Felix 命令,將命令直接分發到 Felix 執行時。
我們新增 OSGi 支援的原因之一是為了支援圍繞 Roo 發展的第三方外掛社群。編寫外掛是一回事,但您還需要一種簡單的方式讓社群找到感興趣的外掛並安裝它。您還需要一個強大且經過驗證的安全模型,以便只有您信任的開發者才能編寫安裝到您計算機上的外掛。您還需要一種方式,讓外掛開發者可以在他們喜歡的任何地方開發和託管外掛,同時仍然提供一些合理的預設設定,以便他們可以快速獲得結果。
為了幫助人們快速開始開發外掛,我們在 Roo 中添加了一個外掛建立器。只需使用新的 "addon create" 命令。這個命令不僅會為您建立一個外掛骨架,還會配置它以便在 Google Code 上開箱即用地進行託管,並確保當您使用部署目標時,您的專案的 OSGi Bundle Repository (OBR) 檔案會自動更新。OBR 檔案甚至使用 "httppgp://" 作為協議,以便您的外掛可以與我們基於去中心化 PGP 的安全基礎設施關聯起來。因此,您只需幾分鐘就可以從一個空目錄轉變為一個正確託管、OBR 列出、相容安全模型的外掛。
當然,您可以將 OBR 倉庫 URL 分發給您的朋友和粉絲,他們可以使用“osgi obr url add”命令將其新增。然而,還有一種更好的方法。只需將帶有 OBR 倉庫 URL 的電子郵件傳送到 [email protected]。我們的 RooBot 伺服器將訪問您的 OBR 檔案並定期監控其更改。然後,它將使用有效且相容安全模型的外掛更新 http://spring-roo-repository.springsource.org 上的 roobot.xml 檔案。所有 Roo 例項在執行時都會下載一份 roobot.xml 檔案,因此它們將發現您的外掛。
然後,Roo 使用者只需輸入 "addon install" 命令即可安裝您的外掛。TAB 輔助甚至可以自動補全您的外掛名稱。一旦他們按下回車鍵,您的 OBR 檔案將被新增到他們的 Roo 安裝中,並嘗試進行下載。然而,由於使用了 httppgp:// 協議,只有當用戶信任您的 PGP 金鑰(或者如果他們信任所有人,他們輸入了“pgp automatic trust”)時,Roo 才會允許下載完成。
Roo 使用者發現您的外掛的另一種方式是直接輸入您的外掛提供的命令。Roo 將自動列出所有提供該命令的已知外掛。還有“addon list”命令可以幫助人們找到您的外掛。
在 Roo 1.1.0 中,編寫外掛也變得更加容易。我們添加了新的“Joey”基礎設施和更好的抽象,以幫助您編輯常用檔案。
我們在 Roo 1.1.0 中還做了一些其他更改,包括:
如果您是 Spring Roo 的新手,並希望利用所有這些功能,只需下載 Roo 並按照參考指南的入門章節進行操作。我們還為希望將專案升級到此新版本的現有使用者準備了升級說明。您可能還希望考慮下載 SpringSource Tool Suite 2.5.0 (STS),因為它具有許多 Roo 和 Google 特有的功能,將使您的開發工作更加輕鬆。實際上,如果您下載 STS,就可以跳過下載 Roo,因為 STS 2.5.0 集成了 Roo 1.1.0,非常方便。
下個月我們將釋出 Roo 1.1.1。我們目前正在完成並在 Roo 1.1.1 中包含一些小的改進,所以請儘快回來檢視。關注 Twitter 上的 @SpringRoo 和工程團隊是瞭解開發和新版本的最簡單方式。我們也鼓勵您參與Spring Roo 論壇,獲取與 Roo 相關的建議和解答疑問。在論壇上,您將獲得友好 Roo 社群以及 Roo 和 GWT 團隊工程師的幫助。
我們希望您在使用 Spring Roo 1.1.0 時獲得的樂趣,就像我們構建它時一樣多。