中国领先的IT技术网站
|
|

Groovy使Spring更出色

本文介绍Groovy使Spring更出色,groovy 文件中,使 Web 应用程序的部署更加灵活。

作者:网络来源:中国IT实验室|2009-06-19 18:11

开发者大赛路演 | 12月16日,技术创新,北京不见不散


Spring Framework 为 Web 和企业应用程序提供了坚实的基础。通过支持 Groovy 等动态语言,Spring 添加了一些功能,从而使应用程序架构更加灵活、更具动态性。在包含 2 部分的系列文章 的第一部分中,您将学习将 Groovy 集成到 Spring 应用程序的基础知识。

Spring 2.0 支持将动态语言集成到基于 Spring 的应用程序中。Spring 开箱即用地支持 Groovy、JRuby 和 BeanShell.以 Groovy、JRuby 或任何受支持的语言(当然包括 Java? 语言)编写的应用程序部分可以无缝地集成到 Spring 应用程序中。应用程序其他部分的代码不需要知道或关心单个 Spring bean 的实现语言。

Spring 支持动态语言意味着应用程序可以获得灵活性和动态性,并且没有任何附加条件。在本系列的第 1 部分中,您将看到如何将 Spring 和 Groovy 一起使用,以及这个强大集成如何为应用程序增加有趣的功能。例如,您可能需要频繁地更改小块的业务逻辑、应用程序发出的 e-mail 消息中包含的文本、应用程序生成的 PDF 格式和布局等。为了进行更改,传统的应用程序架构可能需要完全重新部署应用程序。Spring 支持 Groovy 之后,您可以这样更改一个已部署的应用程序,并使这些更改立即生效。我将讨论这一功能为应用程序所带来的好处,以及可能引发的问题。本文中所有例子的完整的源代码(参见 下载)都可以下载。

Spring 的动态语言支持

动态语言支持将 Spring 从一个以 Java 为中心的应用程序框架改变成一个以 JVM 为中心的应用程序框架。现在,Spring 不再只是让 Java 开发变得更容易。它还允许将以静态和动态语言编写的代码轻松地插入到 Spring 支持的分层架构方法中,从而使 JVM 的开发也变得更加容易。如果您已经熟悉 Spring,那么您会感到很舒服:可以利用 Spring 已经提供的所有特性 — 控制反转(IoC)和依赖项注入、面向方面编程(AOP)、声明式事务划分、Web 和数据访问框架集成、远程调用等 — 同时又可以使用灵活动态的语言,比如 Groovy.

Spring 通过 ScriptFactory 和 ScriptSource 接口支持动态语言集成。ScriptFactory 接口定义用于创建和配置脚本 Spring bean 的机制。理论上,所有在 JVM 上运行语言都受支持,因此可以选择特定的语言来创建自己的实现。ScriptSource 定义 Spring 如何访问实际的脚本源代码;例如,通过文件系统或 URL.Groovy 语言集成通过 ScriptFactory 的 GroovyScriptFactory 实现得到支持。

为什么是 Groovy?

根据官方的 Groovy 站点,Groovy 是 “用于 Java 虚拟机的一种敏捷的动态语言”,它 “以 Java 的强大功能为基础,同时又包含由 Python、Ruby 和 Smalltalk 等语言带来的强大附加功能”,例如动态类型转换、闭包和元编程(metaprogramming)支持(参见参考资料)。它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。我喜欢将它看作是没有讨厌代码,但又具有闭包和动态语言中的其他特性的 Java 语言。

Groovy 特别适合与 Spring 的动态语言支持一起使用,因为它是专门为 JVM 设计的,设计时充分考虑了 Java 集成,这使 Groovy 与 Java 代码的互操作很容易。它的类 Java 语法对于 Java 开发人员来说也很自然。

结束语

您已经看到了配置 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 的静态配置在运行时不能更改,与之对比,这个功能提供了很大的灵活性。

【编辑推荐】

  1. Spring.NET1.1.2发布
  2. Java的Spring框架概述
  3. 对于Struts和Spring两种MVC框架的比较
  4. Spring创始人:看衰Java EE
  5. 将Flex与Spring集成框架
【责任编辑:志京 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

UNIX到Linux的移植

本书讲述怎样把UNIX环境下的应用程序移植到Linux环境上运行,是一本综合的开发和解决问题的参考手册 。本书详细描述了当前IT行业中被广泛应...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊