快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
应用程序上下文,然后 ,应用程序中的组件只需使用 Spring 为它们提供的依赖项。在 Spring Web 应 用程序中,可以配置一个 servlet 上下文侦听器,在应用程序启动时引导 Spring。例如,可以定义一个 PDF 发票生成服务,如清单 15 所示:

清单 15. 使用 PDF 生成器的服务类

@Servicepublic class InvoicePdfServiceImpl implements 

InvoicePdfService {    @Autowired    private PdfGenerator 

pdfGenerator;    public byte[] generatePdf(Long invoiceId) {    

    Invoice invoice = getInvoiceSomehow(invoiceId);        return 

pdfGenerator.pdfFor(invoice);    }    // Rest of 

implementation...}

清单 15 中的 InvoicePdfServiceImpl 类刚好被实现为一个 Java 类,它依 赖于 PdfGenerator。可以很方便地将它实现为 Groovy bean。可以通过任何以编 译的或用脚本编写的 bean 配置来使用 GroovyPdfGenerator 实现,而 InvoicePdfServiceImpl 对此一无所知。因此,使用 Groovy(或任何动态语言) 对应用程序代码而言是透明的。这样很好,因为实现了组件之间的松散耦合,从 而使单元测试更加容易,并且可以使用最适合的实现语言。

结束语

您已经看到了配置 Groovy 语言 bean 的一些不同的方式,以及在基于 Spring 的应用程序中使用它们是多么容易。您可以像使用 Java 类一样使用已编 译的 Groovy 类。您还看到了配置用脚本编写的 Groovy 对象的一些不同的方式 。应该选择的选项取决于如何在应用程序中使用 Groovy。还可以在同一个应用程 序中结合使用已编译的和用脚本编写的 Groovy bean。实际上,如果希望的话, 还可以在同一个应用程序中同时使用 Java、Groovy、JRuby 和 BeanShell bean ,但我不建议这样做。作为开发人员,必须权衡在同一应用程序中使用多种语言 的优点和缺点。

作为一种语言,Groovy 比 Java 更灵活,这使它成为很有吸引力的选择,即 使仅选择编译 Groovy 类也是如此。Spring 可以集成用脚本编写的动态语言 bean,这使人们更加喜欢选择 Groovy,因为可以在用脚本编写的 bean 中引入附 加的逻辑和灵活性。例如,正如前面看到的那样,可以根据业务逻辑添加确定应 用程序启动时应该实例化的 bean 类型的逻辑。或者,可以将用脚本编写的对象 部署到 .groovy 文件中,使 Web 应用程序的部署更加灵活。.groovy 文件位于 应用程序的 CLASSPATH 中或文件系统中的某个地方,而不是打包在 WAR 文件中 。

到目前为止,您看到的所有东西都为 Spring 工具箱增加了灵活性和威力。但 是,Spring 动态语言支持中最引人注目的特性可能是在应用程序运行时 监视和 检测对动态语言脚本的更改,并在 Spring 应用程序上下文中自动重新装载 更改 后的 bean。第 2 部分将深入探索这个功能。包含 bean 的静态配置在运行时不 能更改,与之对比,这个功能提供了很大的灵活性。

源码:http://www.ibm.com/developerworks/cn/java/j- groovierspring1.html

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