Groovy 使 Spring 更出色,第 2 部分: 在运行时改变应用程序的行为
2009-11-19 00:00:00 来源:WEB开发网使用 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 参数。
更多精彩
赞助商链接