Groovy使Spring更出色,第1部分: 集成的基础知识 - 编程入门网
脚本源代码。此外,可以使用 <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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |