Grails 0.6 新特性简单一览

  首先声明,虽然 Graeme Rocher 已经将Grails 0.6的新特性做了简介,可是到目前为止Grails 0.6还没有正式发布,不过也指日可待了。
  原文请参考 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 代码
 
  1. class BookController {     
  2.    ...  
  3.    def shoppingCartFlow = {   
  4.        showCart {  
  5.            on("checkout").to "enterPersonalDetails"  
  6.            on("continueShopping").to "displayCatalogue"  
  7.        }  
  8.        ...  
  9.        displayCatalogue {  
  10.             redirect(controller:"catalogue", action:"show")  
  11.        }  
  12.        displayInvoice()  
  13.    }  
  14. }  
    Grails在集成Hibernate 和 Web Flow的基础上,允许将会话的范围绑定在一个单独的session上,因此也支持事务会话的乐观锁。

  支持Spring的scopes

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

   REST和Web Services

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

你可能感兴趣的:(java,spring,json,grails,groovy)