领先一步
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 愉快,就像我们构建它一样愉快。