快速业务通道

精通Grails: Grails 事件模型 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

精通Grails: Grails 事件模型

时间:2011-07-25 IBM Scott Davis

对于事件驱动的反应性开发,构建 Web 站点是一门学问。您的应用程序是不是很空闲,焦虑地等待用 户发送请求,然后它传回响应,再返回休眠状态,直到下次调用。除了传统的 Web 生命周期的 HTTP 请 求和响应,Grails 还提供了大量自定义接触点,您可以在此进入事件模型并提供自己的行为。

在本文中,您将发现构建过程中会抛出很多事件。需要自定义地启动和关闭应用程序。最后,探讨 Grails 域类的生命周期事件。

构建事件

开发 Grails 的第一步是输入 grails create-app。最后输入 grails run-app 或 grails war。这期 间输入的所有命令和内容都会在过程的关键点抛出事件。

查看 $GRAILS_HOME/scripts 目录。此目录中的文件是 Gant 脚本,对应输入的命令。例如,输入 grails clean 时,调用 Clean.groovy。

在文本编辑器中打开 Clean.groovy。首先看到的目标是 default 目标,如清单 1 所示:

清单 1. Clean.groovy 中的 default 目标

target (''default'': "Cleans a Grails project") {   clean()   cleanTestReports() }

可见,它的内容并不多。首先运行 clean 目标,然后运行 cleanTestReports 目标。调用堆栈后,看 一下 clean 目标,如清单 2 所示:

清单 2. Clean.groovy 中的 clean 目标

target ( clean: "Implementation of clean") {    event("CleanStart", [])    depends(cleanCompiledSources, cleanGrailsApp, cleanWarFile)    event("CleanEnd", []) }

如果需要自定义 clean 命令的行为,可以在此添加自己的代码。不过,使用此方法的问题是:每次升 级 Grails 时都必须迁移自定义内容。而且从一台计算机移动到另一台计算机时,您的构建会更容易出错 。(Grails 安装文件很少签入版本控制 — 只检签入用程序代码)。为了避免可怕的 “but it works on my box” 综合症,我倾向于将这些类型的自定义内容放在项目中。这确保来自源控件的所有新签出都 包含成功构建所需的自定义内容。如果使用持续集成服务器(比如 CruiseControl),也有助于保持一致 性。

注意,在 clean 目标期间会抛出几个事件。CleanStart 在过程开始之前发生,随后发生 CleanEnd。 您可以在项目中引入这些事件,将自定义代码与项目放在一起,不要改动 Grails 安装文件。您只需要创 建一个监听器。

在项目的脚本目录中创建一个名为 Events.groovy 的文件。添加清单 3 所示的代码:

清单 3. 向 Events.groovy 添加事件监听器

eventCleanStart = {   println "### About to clean" } eventCleanEnd = {   println "### Cleaning complete" }

精通Grails: Grails 事件模型(2)

时间:2011-07-25 IBM Scott Davis

如果输入 grails clean,应该看到类似于清单 4 的输出:

清单 4. 显示新注释的控制台输出

$ grails clean Welcome to Grails 1.0.3 - http://grails.org/ Licensed under Apache Standard License 2.0 Grails home is set to: /opt/grails Base Directory: /src/trip-planner2 Note: No plugin scripts found Running script /opt/grails/scripts/Clean.groovy Environment set to development Found application events script ### About to clean   [delete] Deleting: /Users/sdavis/.grails/1.0.3/projects/trip- planner2/resources/web.xml   [delete] Deleting directory /Users/sdavis/.grails/1.0.3/projects/trip- planner2/classes   [delete] Deleting directory /Users/sdavis/.grails/1.0.3/projects/trip- planner2/resources ### Cl

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号