領先一步
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個表的架構進行了逆向工程,並且我們對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會仔細更新您的實體,只包含對架構發生的更改。如果重複該命令,您無需重複“package”或“schema”選項,因為Roo會從您的初始命令中記住這些選項。
關於Roo連線到資料庫以執行內省所需的JDBC驅動程式,我們已在Roo發行版中提供了某些常見的生產開源資料庫(例如Postgres、MySql)的驅動程式。如果您有其他資料庫,只需輸入“script install-jdbc-drivers.roo”並重新啟動Roo即可訪問Oracle、Microsoft SQL Server、HSQLDB、H2、Derby等。
我們吸取了您對Roo 1.0的反饋,並顯著增強了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 Day 1 Keynote上,我們展示了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),還透過包含適用於Eclipse的Google外掛,提供了開箱即用的Google Web Toolkit開發支援。
您可以使用我們的費用示例來嘗試最新的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 管理 GAE 持久化所需的 Data Nucleus 1 增強器 外掛的生命週期。這一切都與 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表示形式轉換。諸如toJson()、fromJson(String)和與陣列相關的JSON處理方法都透過Roo ITD自動管理。只需在您的Java類中新增@RooJson註解,您就會自動獲得此支援。
大多數 Java 開發者都經歷過維護 java.io.Serializable 類的 serialVersionUID 的繁瑣任務。
有了 Roo 1.1.0,您無需擔心序列化警告。只需在您的 Java 類上新增 @RooSerializable 即可,其餘的交給 Roo。Roo 將為您實現 Serializable,並自動為您維護版本 UID。
當然,我們始終保持與最新庫版本的同步,以便您的基於 Roo 的專案始終能夠訪問最新的功能和錯誤修復。基於 Roo 的專案現在預設使用以下新版本:
我們持續改進了可用性,旨在讓您的開發變得有趣和輕鬆。我們最新的一些可用性增強功能包括
Roo 1.0 和 1.1.0 之間的一個重大但大部分難以察覺的變化是過渡到 OSGi 基礎。我們使用 Apache Felix 作為我們的 OSGi 框架,結合 服務元件執行時 (SCR) 進行元件管理,以及 OSGi 捆綁包倉庫 (OBR) 進行捆綁包解析。這些關鍵變化是為了確保 Roo 的附加元件基礎設施將基於模組化、經過驗證的、可遠端依賴解析的類路徑管理模型。像 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 捆綁包倉庫 (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 輔助甚至會完成您的附加元件名稱。一旦他們按下 Enter 鍵,您的 OBR 檔案將被新增到他們的 Roo 安裝中,並嘗試下載。但是,由於 httppgp:// 協議,Roo 只允許在使用者信任您的 PGP 金鑰(或者他們如果信任所有人,則輸入“pgp automatic trust”)的情況下完成下載。
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 中的一些小改進,所以請儘快回來檢視。關注 @SpringRoo 和 Twitter 上的工程團隊是瞭解開發和新版本的最簡單方法。我們還鼓勵您參與 Spring Roo 論壇,獲取有關 Roo 的建議和問題。在論壇上,您將獲得友好的 Roo 社群以及 Roo 和 GWT 團隊工程師的幫助。
我們希望您使用 Spring Roo 1.1.0 愉快,就像我們構建它一樣愉快。