首先声明,虽然
Graeme Rocher 已经将Grails 0.6的新特性做了简介,可是到目前为止Grails 0.6还没有正式发布,不过也指日可待了。
原文请参考 Grails 0.6 Release Notes,以下是就我本人的了解做了一个简单翻译,以先飨部分Grails fans。
Grails 0.6主要新特性如下:
Grails在集成Hibernate 和 Web Flow的基础上,允许将会话的范围绑定在一个单独的session上,因此也支持事务会话的乐观锁。
其他支持的scopes还包括"prototype", "singleton", "request", "session", "flash", "flow" 和 "conversation",其中后三个是属于Web Flow的
此外,一个新的功能点是现在可以轻松地进行 XML 或者JSON 转化了(以前这个特性仅仅在Converters插件中有效)。看一下以下代码就知道了 :)
原文请参考 Grails 0.6 Release Notes,以下是就我本人的了解做了一个简单翻译,以先飨部分Grails fans。
Grails 0.6主要新特性如下:
- Groovy和Java联编(联合编译)
- 集成Spring的Web Flow
- 在Grails的services中支持Spring的scopes
- 提高了对REST的支持,可以自动地使用XML/JSON编码,支持RESTful URL映射
- 新的专门用于配置的DSL取代了原来的convention
- 支持Sitemesh的inline decorators
- 启动时间,单元测试和生成工具,在速度上都有大幅度的提高
Groovy和Java联编
Groovy和Java的联编意味着在Java源代码中可以直接调用Groovy的类,而且Java源代码现在也支持运行时动态加载,这样一来大大减少了服务器的启动次数。集成Web Flow
有了Spring Web Flow项目的支持,Grails现在可以构建有状态的flows了,详细的DSL可以参考 Web Flow 描述,此处仅给出一个简单示例
java 代码
- class BookController {
- ...
- def shoppingCartFlow = {
- showCart {
- on("checkout").to "enterPersonalDetails"
- on("continueShopping").to "displayCatalogue"
- }
- ...
- displayCatalogue {
- redirect(controller:"catalogue", action:"show")
- }
- displayInvoice()
- }
- }
支持Spring的scopes
Grails的services类现在支持Spring和Web Flow的scopes。比如一个service class可以在指定"flow"范围,而且可以在客户端和服务器端维护其状态。
java 代码
- ass BookService implements Serializable {
- static scope = "flow"
- }
REST和Web Services
Grails 0.6通过URL Mappings加强了对REST的支持,一个URL映射可以将action和HTTP方法一一对应,比如
java 代码
- mappings {
- "/books/$id?" {
- controller = "book"
- action = [GET:"list", DELETE:"delete", POST:"update", PUT:"save"]
- }
- }
java 代码
- ort grails.converters.*
- ...
- def list = {
- render Book.list() as XML
- // or render Book.list() as JSON
- }