领先一步
VMware 提供培训和认证,助您快速提升。
了解更多我们很高兴地宣布 Spring Roo 1.1.1 已正式发布。此新版本包含 超过 250 项修复和增强,包括许多性能和功能改进。
和往常一样,SpringSource Tool Suite (STS) 2.5.2 将很快发布,并将集成此新版本的 Spring Roo。您也可以下载 Spring Roo 1.1.1 的独立版本并立即开始使用。
让我们简要介绍一下我们在 Roo 1.1.1 中添加的一些更值得关注的增强功能。如果您正在升级基于 Roo 的项目,我们建议您查阅特定版本的升级说明,这些说明包含在参考指南中。参考指南也包含在下载 ZIP 文件中,有 HTML 和 PDF 格式。
Roo 团队一直致力于提升 Roo 的性能、占用空间和可用性。
已经实现了一些显著的性能改进,在许多常见情况下,Roo 现在运行速度是以前的两倍。例如,运行“roo script clinic.roo”来创建 Petclinic 示例,以前在 Roo 1.1.0 中需要 25 秒,而在同一台机器上使用 Roo 1.1.1 只需 11 秒。我们还继续对 Roo 内部进行性能分析和增强,以便在 1.1.2 中提供更好的性能分析和结果。
可用性通过多种方式得到了增强。我们显著扩展了文档,特别是关于数据库逆向工程和 JDBC 驱动程序安装的部分。Roo 1.1.1 还包含了一些新的 shell 功能,使 Roo 更易于使用。这些功能包括:如果向 Roo 命令提供了未知选项,则报告错误;命令选项解析不区分大小写;命令执行期间的更好消息提示;以及更具信息量的提示。
我们还稍微减小了 Roo 的占用空间。Roo 1.1.0 发行版 ZIP 文件为 7.2 Mb,而 Roo 1.1.1 现在是 6.8 Mb,尽管增加了新功能。虽然下载大小减少不显著,但令人高兴的是 Roo 并没有随每个版本增大,而是朝着相反的方向发展。
大多数使用 Roo 的人都在构建企业级 Java 应用。持久化是这类应用的关键需求,因此我们在 Roo 1.1.1 中继续增强了持久化功能。
Roo 1.1.1 中对云持久化的支持得到了极大改善。特别是,这个新版本增强了对 VMforce 的支持,包括升级到Data Nucleus 2.1.3。我们还改进了 Google App Engine (GAE) DataStore 的支持。Roo 现在通过其类型间声明 (ITDs) 提供特殊的 GAE 关系处理。这意味着您现在可以调用 GAE 相关对象的访问器和修改器方法,Roo 将在内部管理标识符持久化和对象检索语义。
Roo 1.1.0 中引入的增量数据库逆向工程 (DBRE) 功能非常受欢迎,收到了大量社区反馈和新增强功能的请求。此功能的质量持续提升,增加了对用户指定要包含或排除的表的支持、对 DBRE 管理实体的自动集成测试,以及对 DBRE 表之间多重关系的支持。
Roo 1.1.0 中人们经常问到的一个问题是,如果 Roo 没有附带 JDBC 驱动程序,如何内省数据库。这导致我们发布了一个临时脚本,人们可以使用它来安装常用驱动程序,但这种方法对于所有可用的 JDBC 数据库驱动程序来说并不实用。因此,在 Roo 1.1.1 中,我们通过 Roo 广泛的插件机制添加了对任何 JDBC 数据库驱动程序的自动发现和安装的支持。当您首次在 Roo 1.1.1 中尝试 DBRE 操作时,如果未安装 JDBC 驱动程序,您将看到一个搜索结果,显示适合的插件并指示用于安装它的命令。最棒的是,现在社区中的任何人都可以为不受支持的数据库制作新的 JDBC 插件,并将其提供给所有 Roo 用户。我们甚至添加了一个新的插件创建模板,专门用于将 JDBC 驱动程序封装成适合 Roo 插件发现的形式。您可以在参考指南的章节中阅读更多关于此新功能的信息。
标准(非云、非 DBRE)基于 JPA 的 Roo 应用程序也有一些新的持久化功能可用。这些功能包括支持并发访问多个数据库,以及在实体上指定版本字段。
我们内置的两种 Web 技术在 Roo 1.1.1 中都有所改进。
自 Roo 1.1.0 以来,Google Web Toolkit (GWT) 支持得到了显著增强。原始实现中许多问题的一个来源是如何修改 Roo 管理的代码。在 Roo 1.1.1 中,我们通过引入伪 ITD 模型全面解决了这个需求。很容易识别 Roo 管理的 GWT 源文件,因为它们采用了与普通 Roo 应用程序类似的파일명约定(即 *_Roo_Gwt.java)。这意味着您对文件所做的任何更改都将被 Roo 保留。我们还添加了对新 GWT 2.1.1 功能的支持,例如代理实体中的继承。
使用 Roo 构建 Spring MVC 应用程序的用户也将享受到 1.1.1 中的一些新功能。首先,对 JSON REST 控制器的支持更加全面。此外,还有一个新的集中式 ConversionService 来取代以前特定于控制器的转换器,因此如果您正在开发基于 Roo 1.1.0 的 MVC 项目,您应该查阅前面提到的升级说明。增量数据库逆向工程 (DBRE) 的兼容性也得到了改进,特别是通过Web 层对复合主键的支持。我们还进行了内容类型调整,以便您可以更轻松地使用 Apache Tiles 以外的模板框架,并升级到Spring Security 3.0.5。
Roo 1.1.0 中首次引入的插件发现和安装功能持续改进。您会发现现在有更好的插件搜索功能,包括内置关键字匹配、基于排名的排序、灵活的行格式化、版本兼容性和可信开发者功能。基于 PGP 的去中心化安全基础设施现在也更适合那些位于代理服务器后的用户,并且我们将新的插件搜索功能集成到了 shell 的未知命令解析器和 JDBC 驱动程序定位器中。所有这些意味着在 Roo 中定位和安装新功能变得更简单、更容易。
插件模型的最大难题之一是人们如何识别哪些扩展值得使用。如果一个工具拥有数百个扩展,但其中许多不值得使用、已损坏或无人维护,那么这些扩展就没有意义。我们决定在 Roo 中解决这个问题,让 Roo 自动收集关于人们正在使用哪些公共插件的匿名信息,并将这些聚合信息纳入插件搜索结果中。当然,这只会在您同意 Roo 收集此信息的情况下发生,并且收集的信息绝不会用于识别您或您的项目。类似地,Roo 现在也允许社区对其正在使用的插件提供可选反馈(例如评分和评论),这些反馈会包含在插件搜索结果中。这些功能提供了一种高效的方式来自动确定插件受欢迎程度,而无需用户麻烦地访问网站进行投票和评论等。
Roo 1.1.1 还包括 Spring 用户代理分析 (UAA) 支持。UAA 启用了上述插件排名数据收集功能,并帮助我们收集关于 Roo 使用情况的匿名信息。这些信息极大地帮助我们了解互操作性(因为我们知道人们在项目中一起使用了哪些常见的公共技术)并确定路线图的优先级。此功能默认禁用,未经您的同意不会运行。如果您想了解更多关于 UAA 以及它如何保护您的隐私,请参阅UAA 常见问题。
最后,Roo 1.1.1 提供了许多新功能和增强功能,帮助插件开发者构建插件。首先,我们通过“addon create”命令提供了更完整的示例。有一些新的实用类用于在 bundle 中查找资源,以及显示文本文件和控制过滤器位置。线程名称可以从控制台输出中隐藏,并增加了对内部类型和更复杂 Java 编译单元创建的支持。开发模式也提供了许多新功能,例如深度日志记录、文件系统操作的SHA1 代码,以及出现问题时取消自动撤销(帮助您查看生成的文件)。元数据层有大量增强,包括通过 AbstractMemberDiscoveringItdMetadataProvider 提供的更好的元数据扫描模型、ITD MetadataProvider 更灵活的类级别下游解析,以及自动无限元数据循环检测和重试功能。最后,我们增强了许多文件系统内部功能,例如延迟文件写入,甚至延迟文件删除,这有助于在多次传递中创建复杂的 ITD 元数据。
所有这些增强功能使得编写能够满足非常复杂的 ITD 和元数据要求,同时性能极佳且易于调试的插件变得更加容易。Roo 1.1.2 中也将带来(并且已经在 Git 主分支中)显著增强的元数据日志记录,如果您正在开发基于 ITD 的插件,这可能会引起您的兴趣。
我们探讨了 Spring Roo 1.1.1 中包含的 250 多项修复和增强功能中的一部分。无论您是使用 Roo 构建企业项目,还是为 Roo 社区构建插件,我们都致力于在此新版本中显著改善您的 Java 开发体验。
不要忘记 STS 2.5.2 即将发布,它将嵌入 Roo 1.1.1 和其他对开发基于 Roo 的应用有用的技术。您也可以立即下载 Roo 1.1.1 并开始使用。
如果您对这个新版本有任何疑问,请在Spring Roo 社区论坛提问。您还可以通过 Twitter 关注开发团队成员以获取最新的开发动态,并关注 @SpringRoo 以获取未来的发布公告。请在所有与 Roo 相关的推文中带上 #springroo 标签,以便其他人轻松看到。
希望您喜欢这个新版本。