快速业务通道

Groovy使Spring更出色,第1部分: 集成的基础知识 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
脚本源代码。此外,可以使用 <lang:property> 元素为脚 本 bean 设置属性。使用 <lang:groovy> 定义基于 Groovy 的 bean 是一 种更好的选择。对阅读 Spring 配置的人而言,这种选项也更加清晰。

配置内联 Groovy 脚本

为了实现完整性,我将介绍:Spring 还支持直接在 bean 定义中编写 Groovy 脚本。清单 11 使用 一个内联脚本创建 pdfGenerator:

清单 11. 内联定义脚本 bean

<lang:groovy id="pdfGenerator">
  <lang:inline-script>
    <![CDATA[
    class GroovyPdfGenerator implements PdfGenerator {
      ...
    }
    ]]>
  </lang:inline-script>
  <lang:property name="companyName" value="Icky Groovy 

Bookstore"/>
</lang:groovy>

这段代码使用 <lang:groovy> 和 <lang:inline-script> 标记 定义 pdfGenerator bean,它包含定义类的 Groovy 脚本。可以像前面一样使用 <lang:property> 设置属性。您可能 已经猜到,我不建议在 XML 配置文件中定义脚本 bean(或这一方面的任何类型 的代码)。

Groovy使Spring更出色,第1部分: 集成的基础知识(6)

时间:2011-08-27 IBM Scott Leberknight

使用 Grails Bean Builder 配置 bean

Grails Web framework 在幕后依赖于 Spring。Grails 提供了 Bean Builder ,这是一个很棒的特性 ,让您可以使用 Groovy 代码编程式地 定义 Spring bean(参见 参考资料)。 编程式地定义 bean 比 XML 配置更灵活,因为可以在 bean 定义脚本中嵌入逻辑,而这在 XML 中是不可 能的。通过使用 Bean Builder,可以为已编译 Groovy 类和用脚本编写的 Groovy bean 创建 bean 定 义。清单 12 使用已编 译的 Groovy 类定义 pdfGenerator bean:

清单 12. 使用 Bean Builder 定义已编译的 Groovy bean

def builder = new grails.spring.BeanBuilder()
builder.beans {
  pdfGenerator(GroovyPdfGenerator) {
    companyName = ''Compiled BeanBuilder Bookstore''
  }
}
def appContext = builder.createApplicationContext()
def generator = context.pdfGenerator

清单 12 中的代码首先实例化一个 BeanBuilder,然后通过方法调用创建 bean。每个方法调用和可 选的闭包参数定义一个 bean,并设置 bean 属性。例如,pdfGenerator (GroovyPdfGenerator) 定义一 个名为 pdfGenerator 的 bean,其类型为 GroovyPdfGenerator,闭包中的代码 则设置 companyName 属 性。当然,在 beans 闭包中可以定义多个 bean。

通过使用 Bean Builder,还可以从 Groovy 脚本而不是已编译的 Groovy 类 创建 bean。但是,Bean Builder 没有 <lang:groovy> 配置中的语法糖(syntactic sugar,即在 计算机语言中添加的某 种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用),所以需 要将 bean 定义为 GroovyScriptFactory,并创建一个 ScriptFactoryPostProcessor bean。清单 13 是一个例子,展示如 何使用 Bean Builder 配置用脚本编写的 Groovy bean:

清单 13. 使用 Bean Builder 定义用脚本编写的 Groovy bean

def builder = new grails.spring.BeanBuilder()
builder.beans {
  pdfGenerator(GroovyScriptFactory,
        ''classpath:groovierspring/GroovyPdfGenerator.groovy'') {
    companyName = ''Scripted BeanBuilder Bookstore''
  }
  scriptFactoryPostProcessor(ScriptFactoryPostProcessor)
}
def appContext = builder.createApplicationContext()
def generator = context.pdfGenerator

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