WEB开发网
开发学院软件开发Java Groovy 使 Spring 更出色,第 2 部分: 在运行时改... 阅读

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

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 使用 Grails Bean Builder 配置可刷新 Groovy bean在 第 1 部分,您看到了如何使用 Grails Bean Builder 通过编程的方式定义 Spring bean,Groovy 使 Spring 更出色,第 2 部分: 在运行时改变应用程序的行为(5),如果使

使用 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 参数。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:Groovy Spring 出色

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接