Grails 0.6 新特性简单一览

AllenYoung 2007-08-21

首先声明,虽然GraemeRocher已经将Grails0.6的新特性做了简介,可是到目前为止Grails0.6还没有正式发布,不过也指日可待了。

原文请参考Grails0.6ReleaseNotes,以下是就我本人的了解做了一个简单翻译,以先飨部分Grailsfans。

Grails0.6主要新特性如下:

  • Groovy和Java联编(联合编译)
  • 集成Spring的WebFlow
  • 在Grails的services中支持Spring的scopes
  • 提高了对REST的支持,可以自动地使用XML/JSON编码,支持RESTfulURL映射
  • 新的专门用于配置的DSL取代了原来的convention
  • 支持Sitemesh的inlinedecorators
  • 启动时间,单元测试和生成工具,在速度上都有大幅度的提高
现就部分特性做些详细介绍

  Groovy和Java联编

    Groovy和Java的联编意味着在Java源代码中可以直接调用Groovy的类,而且Java源代码现在也支持运行时动态加载,这样一来大大减少了服务器的启动次数。

  集成Web Flow

    有了Spring Web Flow项目的支持,Grails现在可以构建有状态的flows了,详细的DSL可以参考Web Flow 描述,此处仅给出一个简单示例
class BookController {     
       ...  
       def shoppingCartFlow = {   
           showCart {  
               on("checkout").to "enterPersonalDetails"  
               on("continueShopping").to "displayCatalogue"  
           }  
           ...  
           displayCatalogue {  
                redirect(controller:"catalogue", action:"show")  
           }  
           displayInvoice()  
       }  
    }  
    Grails在集成Hibernate 和 Web Flow的基础上,允许将会话的范围绑定在一个单独的session上,因此也支持事务会话的乐观锁。

  支持Spring的scopes

    Grails的services类现在支持Spring和Web Flow的scopes。比如一个service class可以在指定"flow"范围,而且可以在客户端和服务器端维护其状态。
ass BookService implements Serializable {  
         static scope = "flow"  
    }  
    其他支持的scopes还包括"prototype", "singleton", "request", "session", "flash", "flow" 和 "conversation",其中后三个是属于Web Flow的

   REST和Web Services

     Grails 0.6通过URL Mappings加强了对REST的支持,一个URL映射可以将action和HTTP方法一一对应,比如   
mappings {  
      "/books/$id?" {  
          controller = "book"  
          action = [GET:"list", DELETE:"delete", POST:"update", PUT:"save"]  
      }  
    }  
    此外,一个新的功能点是现在可以轻松地进行 XML 或者JSON 转化了(以前这个特性仅仅在Converters插件中有效)。看一下以下代码就知道了 :)
ort grails.converters.*  
    ...  
      
    def list = {  
        render Book.list() as XML  
        // or render Book.list() as JSON  
    }  

相关推荐