- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用JSR-223改进Spring框架的动态语言支持_计算机论文
利用JSR-223改进Spring框架的动态语言支持_计算机论文
摘 要 动态语言支持是Spring框架2.0版本的新功能,而Java平台中的动态语言支持直到JDK6版本才有基本实现。本文首先从Spring的工作原理入手分析其实现动态语言支持的静态结构,引入JSR-223提出的动态语言支持框架并与IoC特性结合起来,利用两者的优势改进Spring有限的动态语言支持能力,通过一个应用实例说明了实现方法和应用前景。
关键词 动态语言; Spring2.0 ;控制反转; JSR-2231 引言 在Java语言中提供对动态语言的支持,其初衷来自于使用动态语言访问Java平台中的信息,并且可以在Java平台的应用服务器中运行动态语言编写的页面,但纯粹使用Java语言实现的动态语言引擎为Java程序员结合动态语言编程造成了很大不便:不同动态语言引擎具有不同的应用程序编程接口,不同的动态语言资源需要分别管理等等。2006年10月Spring2.0版本的发布更是在版本1的基础上提供了更加丰富的特性和可扩展性支持,本文将从2.0版本的可扩展的XML配置特性和动态语言支持入手分析其实现原理,对后者的实现进行改进,并利用JSR-223以新的方式更加简洁地为在Java环境中使用动态语言提供强大的功能和特性。
2 Spring工作原理与动态语言支持
2.1 IoC容器
Interface21公司推出的Spring开发框架(以下简称Spring)经过开放源代码社区和众多项目的应用和实际检验,历经多个版本的发展,已经成长为使用开源技术开发J2EE应用的事实标准。Spring运用“控制反转(以下缩写为IoC)”和“面向方面编程”(以下缩写为AOP)的理念,在正规的设计模式和一整套最佳实践的支持下,为普通Java对象提供了包括轻量级IoC容器、AOP支持、声明式事务、对象-关系模型映射、J2EE集成工具、Web开发框架集成工具和基本的MVC实现等7个主要方面的特性和服务。IoC的概念最早来自于2004年Martin Fowler提出的一种组件装配模式,其核心观点是将组件的配置与使用分开[1]。Spring的IoC容器提供这样一种功能:为那些组成应用程序的主体和其他需要由容器管理的对象(称为bean)提供实例化、定位、配置支持,并通过容器核心接口org.springframwork.beans.factory. BeanFactory的多个实现的支持,描述并建立并管理这些对象之间的依赖关系。最常见的方式是通过XML配置元数据来对容器管理的bean进行定义,通过Setter注入和构造器注入两种主要的依赖注入方式实现bean之间的依赖管理,从而实现高层次的松耦合。Spring2.0版本为元数据的XML配置方式提供基于XML Schema的“自定义标签”功能,即通过第三方命名空间将自定义bean的配置引入IoC容器的元数据配置,在应用程序开发中更好的融合Spring的IoC功能。
2.2 动态语言支持
动态类型语言的优点在于方便阅读,不需要写非常多的类型相关的代码,但是不方便调试,命名不规范时往往难于理解;而静态类型语言则具有结构非常规范,便于调试,方便类型安全等优点,缺点是为此需要写更多的类型相关代码,导致不便于阅读。诸如Javascript, Ruby等动态语言具有动态类型、解释执行等优点,并且在多个领域中具有独特的优势,在Java语言中提供对动态语言的支持,其初衷来自于使用动态语言访问Java平台中的信息,并且可以在Java平台的应用服务器中运行动态语言编写的页面。此需求后来形成名为JSR-223的请求正式提交至Java社区[2],目前已经形成以javax.script命名的一套编程接口,并且Java社区为多种不同动态语言提供了该接口的参考实现,其中对Javascript的支持目前直接包含在JDK6的正式版本中。
javax.script包中一整套编程接口的设计目的在于定义动态语言支持框架,为多种动态语言的支持提供统一的访问方式,并且以可插入的方式支持动态语言引擎。包括M基金会提供Javascript支持的Rhino引擎[3],sun公司提供Ruby支持的JRuby引擎等等。
3 动态语言集成框架比较
3.1 Spring2.0
目前Spring2.0提供的动态语言支持框架由一个抽象工厂接口及其实现和多个根据脚本引擎定制的工具类组成,其静态结构如图所示。
图1 Spring2.0的动态语言支持框架类图
核心接口ScriptFactory定义创建动态语言实现bean的getScriptedObject方法,以及构造工厂实例所需的脚本资源和Java接口(Spring要求开发者编写的动态语
您可能关注的文档
- 内容分析法应用于学科信息门户初探_通信学论文.doc
- 册亨县无坝渠首改建应重视的几个问题_工程建筑论文.doc
- 再冷式冰蓄冷系统节能效果的理论分析_工程建筑论文.doc
- 再论“空间句法”_工程建筑论文.doc
- 再论元组关系演算与SQL_计算机论文.doc
- 再谈智能大厦系统集成 _工程建筑论文.doc
- 再谈暖通空调设计_工程建筑论文.doc
- 再谈现代建筑的设计风格与创意_工程建筑论文.doc
- 农业信息化建设问题模糊诊断分析与对策研究_通信学论文.doc
- 农业机械化与可持续发展初探_电子机械论文.doc
- 利用ObjectARX开发基于AutoCAD的法兰盘设计_计算机论文.doc
- 利用OpenGL实现内插算法可视化_计算机论文.doc
- 利用RCM2200实现以太网与异步串口的通信_计算机论文.doc
- 利用TDC组件实现对WEB页面的交互操作_计算机论文.doc
- 利用VBA程序语言绘制公路纵断面图_计算机论文.doc
- 利用VBA编程实现从EXCEL表到AUTOCAD表转换_计算机论文.doc
- 利用VB开发CAI课件_计算机论文.doc
- 利用Web Services实现软件自动升级_计算机论文.doc
- 利用分布式可变换签字和群签字算法实现Ad-hoc 网络安全认证的构想_计算机论文.doc
- 利用各种排热驱动的新型高效吸附式除湿空调系统_工程建筑论文.doc
文档评论(0)