跳转到路径导航栏
跳转到正文内容

使用事件模型定制Grails应用的行为

http://www.sina.com.cn  2008年10月08日 09:00  《程序员》

【InfoQ中文站】无论在构建过程中,还是在创建单个组件(如领域类、控制器)时,典型的Grails应用都会在应用生命周期的关键点抛出事件。我们可以将这些应用事件作为扩展点来创建监听器对其进行拦截,并使用定制行为对其作出响应。除了HTTP请求和响应这种传统的Web应用生命周期以外,Grails还提供了大量定制的接触点,开发者可以利用它们处理事件模型、给出定制的应用行为。这些接触点包括:

在构建阶段抛出的事件,
Web应用的启动和关闭,
Grails领域类的生命周期事件。
针对Gant脚本的事件处理器首次出现在0.5版中,并在Grails目标和插件脚本的执行过程中被触发。它们在Events.groovy脚本中以闭包的集合形式实现(就像Grails中的其它东西一样),其名称都以“event”开头。当Gant脚本中发生“事件”时,Grails就会调用相应的事件闭包。Grails在如下位置搜寻这些脚本:

USER_HOME/.grails/scripts——用户特定的事件处理器
PROJECT_HOME/scripts——应用特定的事件处理器
PROJECT_HOME/plugins/*/scripts——插件特定的事件处理器
我们可以在宏观以及微观层次处理Grails的事件。宏观层次就是构建和应用范围,而微观层次处于领域层,领域类在与数据库发生交互时发布事件。最近Scott Davis撰写了一篇文章,谈到了Grails的事件模型以及贯穿于Grails应用生命周期的事件如何能帮助开发者更好地定制应用的行为。开发者可以通过创建一个Events.groovy文件、并在其中编写定制代码来扩展构建过程,而无需修改标准的Grails脚本。

构建事件:

“grails create-app”和“grails run-app”(或者是“grails war”)之间所有的构建过程步骤都会在关键点抛出事件。你可以通过创建监听器来监听项目中的这些构建事件。 这些事件还可用于安装后配置和应用升级。当你想定制GRAILS_HOME/scripts中的脚本时(以抛出定制事件),Scott建议将这些文件拷贝到项目中的scripts目录中,以便这些客户化脚本也与其他文件一样被加到源码控制系统中。

应用事件:

Powered By Google ‘我的2008’,中国有我一份力!

新浪简介About Sina广告服务联系我们招聘信息网站律师SINA English会员注册产品答疑┊Copyright © 1996-2008 SINA Corporation, All Rights Reserved

新浪公司 版权所有