快速业务通道

Groovy使Spring更出色,第2部分: 在运行时改变应用程序的行为 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
value="Refreshable Groovy  Bookstore"/> </lang:groovy> <lang:groovy id="invoiceEmailer"         script- source="classpath:groovierspring/GroovyInvoiceEmailer.groovy"         refresh-check-delay="-1"/>

在清单 4 中可以看到,默认的刷新检查延时是 20 秒。但是,我已经将 pdfGenerator bean 的刷新 检查延时配置为 60 秒,并且完全关闭了 invoiceEmailer bean 上的刷新检查。

Groovy使Spring更出色,第2部分: 在运行时改变应用程序的行为(3)

时间:2011-08-27 IBM Scott Leberknight

使用 Grails Bean Builder 配置可刷新 Groovy bean

在 第 1 部分,您看到了如何使用 Grails Bean Builder 通过编程的方式定 义 Spring bean。如果 使用 Bean Builder,可以比较轻松地为 bean 添加自动刷新 — 不过这样一来, 就会更多地暴露 Spring 内部,因为 Bean Builder 和 <lang:groovy> 语法糖不同。清单 5 展示了如何为所有脚 本化 bean 添加一个默认的刷新检查,以及如何为单个 bean 设置刷新延时:

清单 5. 使用 Grails Bean Builder 配置可刷新 Groovy bean

def builder = new grails.spring.BeanBuilder() builder.beans {    scriptFactoryPostProcessor(ScriptFactoryPostProcessor) {      defaultRefreshCheckDelay = 20000    }    pdfGenerator(GroovyScriptFactory,           ''classpath:groovierspring/GroovyPdfGenerator.groovy'') { bean - >      companyName = ''Refreshable Bean Builder Bookstore''      bean.beanDefinition.setAttribute(        ScriptFactoryPostProcessor.REFRESH_CHECK_DELAY_ATTRIBUTE, 60000)    } }

清单 5 中的 Bean Builder 配置在逻辑上等同于 清单 4 中的 pdfGenerator bean 的配置。您使用 ScriptFactoryPostProcessor bean 的 defaultRefreshCheckDelay 属性为所有 脚本化 bean 设置了一 个默认的刷新检查延时。在使用 Bean Builder 时,若要为单个的 bean 设置刷 新检查延时,必须在底 层的 Spring bean 定义上设置一个属性。如果使用 <lang:groovy> 基于 XML 的配置时,Spring 会负责底层的细节,而如果使用 Bean Builder,则需要您自己做这件事。注意, 为了在 bean 定义上设 置属性,还需要为 pdfGenerator bean 上的闭包声明一个 bean 参数。

定制 Groovy bean

您已经看到了如何使用 refreshable beans 特性使 Groovy bean 在运行时自 动更新,并使得应用程 序在运行时更加动态。为了使 Groovy bean 更加灵活,Spring 的 Groovy 支持 还提供了另一种方式: 定制。通过定制,可以将定制的逻辑注入到 Groovy bean 创建过程中。通过 GroovyObjectCustomizer 接口(清单 6 所示),可以在新创建的 GroovyObject 上执行定制逻辑:

清单 6. GroovyObjectCustomizer 接口

public interface  GroovyObjectCustomizer  {    void customize(GroovyObject goo); }

GroovyObjectCustomizer 是一个回调,Spring 在创建一个 Groovy bean 之 后会调用它。可以对一 个 Groovy bean 应用附加的逻辑,或者执行元编程,例如替换对象的元类。清单 7 展示了一个实现, 该实现输出执行一个 Groovy bean 上的某个方法所花的时间:

清单 7. 性能日志记录 GroovyObjectCustomizer

public class  PerformanceLoggingCustomizer implements GroovyObjectCustomizer  {    public void customize(GroovyObject goo) {      DelegatingMetaClass metaClass = new DelegatingMetaClass (goo.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号