Groovy 使 Spring 更出色,第 2 部分: 在运行时改变应用程序的行为
2009-11-19 00:00:00 来源:WEB开发网
清单 9. 使用 Grails Bean Builder 添加一个 Groovy 对象定制程序builder.beans {
performanceLoggingCustomizer(PerformanceLoggingCustomizer)
scriptFactoryPostProcessor(ScriptFactoryPostProcessor) {
defaultRefreshCheckDelay = 20000
}
pdfGenerator(GroovyScriptFactory,
'classpath:groovierspring/GroovyPdfGenerator.groovy',
performanceLoggingCustomizer) { bean ->
companyName = 'Refreshable Bean Builder Bookstore'
bean.beanDefinition.setAttribute(
ScriptFactoryPostProcessor.REFRESH_CHECK_DELAY_ATTRIBUTE, 60000)
}
}
更巧妙的数据库
不需要使用 JAR,Spring 提供了对内联脚本和通过 Spring Resource 抽象装载的脚本的支持。在 第 1 部分 中,您看到了内联脚本和基于 Resource 的脚本 — 尤其是 CLASSPATH 资源。您使用 可刷新 bean 添加了更多的动态行为。Spring 装载、编译和刷新动态语言 bena 的能力依赖于 ScriptSource 接口,如清单 10 所示(不完整的 Javadocs):
清单 10. ScriptSource 接口public interface ScriptSource {
String getScriptAsString() throws IOException;
boolean isModified();
String suggestedClassName();
}
ScriptSource 定义 3 个方法:一个方法获取脚本源代码,一个方法确定脚本是否已被修改,还有一个方法返回一个用于脚本的建议类名。Spring 为这个接口提供了两种实现:StaticScriptSource 和 ResourceScriptSource。当在 Spring 配置文件中定义脚本时,可以使用 StaticScriptSource。ResourceScriptSource 则用于从任何 Resource 装载脚本(例如,从 CLASSPATH 上的文件中或从 URL 装载脚本)。
更多精彩
赞助商链接