`
tedeyang
  • 浏览: 326113 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Grails开发经验

 
阅读更多

最近用grails开发,一路入坑多次,跌跌撞撞总算快走上坦途了。

该记的记,该忘的忘,想起来就随便写在这里吧。

  • IDEA U版是grails开发的神器,STS之流无法相提并论,本来以为SpringSource收购Grails会有很好的发展,从工具的支持来看还是不够好。
  • IDEA当前版本ultimate 11.1( IU117.418 )有一个对grails setting同步的bug,如果提示“Grails not found”或者<r:resource>标签显示为红色(grails resources plugin未识别的缘故),请点击bug: http://youtrack.jetbrains.com/issue/IDEA-86261 ,第三条回复中已经有补丁可下。
  • IDEA内存调到1024M吧,默认配置对开发grails实在是太卡了。
  • Groovy的官方文档够烂!不管是UserGuide还是javadoc,质量和内容丰富度都无法令人满意。用动态脚本语言的常识连蒙带猜吧,总体来说语法对熟悉javascript、ruby之流的程序员还算没压力,但是javadoc太简陋实在无法忍受。
  • 在我的开发期间grails2.1.0rc2升级到2.1.0,并无特殊更新。grails upgrade执行一下,看看结果只是修改了application.prop*文件而已。
  • JDK7.0并未有多少性能提升,似乎有反效果,我又降级到了JDK6.0,当然也可能是64bit的缘故。
  • Grails对mingw和cygwin的支持都不好,折腾一番还是用回cmd。虽然Thinkpad W520很强,但面对Macbook Pro 15“ retina版的艳光四射真心无法hold啊,口水口水。但是买这个得有心理准备,因为很多软件还没有支持retina,小心你的眼神。不过好消息是eclipse已经支持了。还不完美
  • 如果在Servlet Filter中进行了HttpSession保存entity之后读取的这样的蠢事,你就经典爆了: LazyInitializationException - could not initialize proxy no Session.虽然Grails内置了OSIV,但这是用Spring的拦截器实现的,对更前面的Filter无效。解决方案很多,可以用lazy:false,可以重新attach(),可以只保存对象id,要用的时候重读
  • Grails经常抛出一些莫名其妙的异常,完全摸不着头脑。举例我有一个domain class :mpa.Menu,还有一个annotation class:mpa.annotation.Menu,若干次重启后(注意不是第一次重启)报错:
    Missing type or column for column[menus menu] on domain[User Group] referencing[mpa.Menu]
     猜测是命名冲突(包名不同,这也会?),删除mpa.annotation.Menu,重启还是依旧。这里得提一下Grails的缓存太厉害了,你得执行grails clean命令,该问题才得以解决。类似问题层出不穷,不过值得赞的是grails在其他时候有很友好的api提示,譬如request.uri写错为request.uro,他会给你possible method。这点很贴心。
  • Grails的文档不错,能得到大多数情况下的帮助,当然最根本的是你得精通它背后的技术:Java、Spring\Hibernate\... ,总是有问题会让你google到stackoverflow去.
  • Grails的插件很好用!
  • shiro是个很好的权限系统,比起Acegi简单清晰,虽然我自己写了一个,但还是值得推荐。
  • Groovy在6月份发布了2.0, Grails2.1还未支持该版本。Groovy2.0越来越像Scala了,静态类型检查、静态编译,很期待这个版本的发展。因为我实在无法对scala的语法报什么好感。
  • many-to-one(hasMany,belongsTo=DomainClass)和many-to-many (hasMany,belongsTo=DomainClass) 都是用join-table实现的,但后者的jointable具有复合主键.
  • hasMany对应的collection可以使用clear()清空
  • static belongsTo=domain; static belongsTo=[domain:DomainClass]是不同的,后者还多声明了一个关联属性,相对详细的资料可以看这里
  • <g:img><r:img>都不支持中文路径,囧.
  • 在dev模式下,grails会自动reload,因此它会对app的文件进行监视,这导致了上传文件无法覆盖原文件,例如,上传图片到web-inf/images/下,会抛出IOException(exists and cannot delete), 详细的说明可以查看这个
  • equals()里用getClass() != o.class 对domain class来说是不可靠的,因为你看到的其实是包装类.要用 instanceof

 

1
0
分享到:
评论

相关推荐

    grails 开发框架-1

    grails1.0开发框架1 类似于ruby on rails的框架。

    grails 开发框架-4

    grails1.0开发框架4 类似于ruby on rails的框架。

    grails 开发文档 合辑

    Apress.Beginning.Groovy.and.Grails.From.Novice.to.Professional.Jun.2008 grails_programming Grails1.1中文文档-----2009.3.25 Grails入门指南(第二版) Groovy经典入门 Programming Groovy 2 合集,超实惠哦

    grails快速开发web

    ### Grails 快速开发 ...无论是初学者还是有经验的开发者,都可以从 Grails 的强大功能中受益。通过掌握 Grails 的核心概念和技术,开发者可以更快地构建高质量的 Web 应用程序,并在 Java 生态系统中发挥更大的作用。

    转: Eclipse下Grails开发环境搭建步骤

    在本文中,我们将详细探讨如何在Eclipse集成开发环境中搭建Grails开发环境。Grails是一个基于Groovy语言的开源Web应用程序框架,它简化了Java平台上的Web应用开发流程。通过Eclipse,我们可以获得强大的开发工具支持...

    eclipse开发grails插件

    对于Grails开发,我们需要的是Eclipse中的Grails插件,它能够提供对Grails项目的创建、运行、调试等一系列功能。 **Grails**是基于Groovy语言的全栈式Web开发框架,它借鉴了Ruby on Rails的设计理念,提供了快速...

    grails开发

    本篇文章将深入探讨Grails开发的基础知识,帮助初学者快速掌握Grails的精髓。 1. **Grails概述** Grails是构建在Groovy语言之上,它采用了MVC(Model-View-Controller)架构模式,旨在提高开发效率。Grails集成了...

    Grails开发之(Rest教程).pdf

    标题中提到的"Grails开发之(Rest教程)"表明本文是一份关于Grails框架下进行RESTful服务开发的教程。Grails是一个使用Groovy语言编写的高生产力的框架,其使用约定优于配置的理念,允许快速开发Web应用程序。...

    关于Grails开发的软件部署建议

    关于Grails开发的软件部署建议

    grails 开发框架-5

    grails1.0开发框架5 类似于ruby on rails的框架。

    Grails企业web应用开发与部署

    1. 开发工具:Eclipse、IntelliJ IDEA等IDE都支持Grails开发,其中Grails插件提供了一键创建项目、运行和调试等功能。 2. 安装配置:首先需要安装Java Development Kit(JDK),然后通过Grails官方下载页面获取最新...

    grails敏捷开发

    无论你是初学者还是经验丰富的开发者,都能在Grails中找到提高生产力的方法。通过深入学习和实践,你将能够熟练掌握这个框架,为你的项目带来更高的开发效率和更好的用户体验。参考《Grails入门指南(第二版)》这本书...

    grails login

    Grails是一个基于Java的开源Web应用程序框架,它使用Groovy语言进行开发,提供了高效、简洁的编程模型。在Grails中实现用户登录功能是构建任何Web应用的基础,它确保了数据的安全性和用户权限的管理。本示例将详细...

    grails 开发框架-3

    grails1.0开发框架3 类似于ruby on rails的框架。

    使用Grails快速开发Web应用

    #### 入门Grails开发 - **环境搭建**:首先,需下载Grails程序并设置环境变量`GRAILS_HOME`,同时将`%GRAIS_HOME%\bin`添加至系统PATH变量中。 - **创建应用**:使用`grails create-app Contact`命令可快速生成名为...

    Grails开发之(Rest教程).docx

    在Grails中开发RESTful API是一项常见的任务,这个文档提供了基于Grails 3.1.5版本的REST教程。Grails是一种基于Groovy语言的开源Web应用框架,它利用了Spring Boot的功能,使得构建现代互联网应用程序变得更加高效...

    grails开发笔记

    ### Grails 开发笔记 #### Grails 概述 Grails 是一款用于 Web 应用开发的开源框架,它基于 Groovy 编程语言,并集成了 Spring、Hibernate 和 SiteMesh 等成熟技术栈。其核心特性之一是“规约取代配置”...

Global site tag (gtag.js) - Google Analytics