spring2.0的新特性点评 -乐鱼入口

6顶
1踩

2006-10-03 23:19 by 见习编辑 有9815人浏览
spring2.0的发布恐怕算得上2006年java社区的一件大事了。在spring2.0发布附带的文档里面对2.0新特性做了概要的介绍,2.0的新特性是自然是我们最关注的方面:

一、spring的xml配置引入xml schema语法简化配置

在spring1.x系列中,bean的配置文件使用dtd,没有namespace的分隔。2.0的一个非常大的改进是引入了xml schema的namespace,因而可以将bean的配置文件做大幅度的简化。这些简化包括了对bean属性的各种简化,aop配置的简化,事务配置的简化,jndi配置的简化等方面。当然,在简化配置的同时,新的xml schema实际上引入了更多的xml语法,因此使用一个支持xml schema的xml editor就显得非常必要了,例如eclipse wtp就可以提供schema的语法自动提示和校验功能。

spring1.x的bean配置文件逐渐复杂烦琐化,是spring历来被人所垢病的主要问题之一。在spring2.0里面xml schema语法的配置可以在相当程度上降低配置文件的复杂程度和烦琐程度,可以视为spring的重大改进之一。但是我们也必须看到xml schema并没有从根源上面解决xml配置复杂的问题,而只是减轻。

将所有的bean之间的依赖关系,组装关系统统使用xml来描述,本身就会导致xml阅读和修改一定的困难。并且用xml配置本身无法直接进行单元测试来验证依赖关系。因此,当bean之间关系越复杂的时候,xml配置文件本身的维护也是一个负担。

我个人比较期待未来的spring能够使用脚本语言来编写和组装bean之间的关系,这样组装脚本本身也是可测试的,而且脚本的描述能力要远远好于xml配置文件,同时编写和维护起来也比xml轻松。


二、提供了request和session范围的bean

引入request scope和session scope的bean,我感觉是把双刃剑。对于普通的java web框架应用来说,和servlet容器相关的操作应该限制在web层,对于业务层来说,不应该涉及request和session的scope,否则业务层代码无法脱离servlet容器进行单元测试。对于使用webwork/struts框架的用户来说,恐怕不太会使用该特性,另外根据我的理解,也许request/session scope的bean也是为了提供给spring mvc的controller使用的。

除此之外,对于ajax web service调用来说,这一特性反而是很有用处的。对于这种应用场景,js通过ajax调用,抛开web层框架,直接访问业务层bean,这个时候就需要提供request/session scope的bean了。


三、集成aspectj,可以管理容器外对象,提供了领域模型的依赖注入

通常由hibernate管理的持久化对象po,并不是由spring容器初始化的,往往是用户自己new出来,或者通过find,load方法创建的,其结果就是spring容器无法对这种容器外创建的对象进行bean依赖关系注入。

在spring2.0中,可以使用aspectj对领域模型进行静态织入,这样当该领域模型在容器外被创建的时候,会产生对容器的回调,进行依赖关系的注入。

spring2.0提供的这一特性,确保了martin folwer的rich domain object的可行性,这一特性的提供恐怕会对未来很多java系统的设计产生相当深远的影响。

其实针对rich domain object更进一步,如果将dao功能作为domain object的抽象父类,那么持久化对象po就会集po,dao,service对象于一身,整个业务层,持久层完全合并为一个对象,通过这种方式进行框架简化得到的结果就是,高度类似于ruby on rails的full-stack的mvc框架。


四、jpa支持

这一点其实没有什么可点评的,提供jpa支持本来就是理所应当之事。


五、jdbc的namedparameterjdbctemplate

namedparameterjdbctemplate我认为意义非凡,为jdbc查询提供了带命名参数的占位符,而不止是jdbc自己的“?”,这样使用jdbc的时候,也可以很容易的构造出来带占位符的动态条件查询,而不是参数值带入方式的拼接sql字符串了。


六、spring web mvc功能的大幅度扩充

看的出来,在spring2.0里面 web mvc功能大幅度扩充,过去不提供的ui taglib也终于提供了,配置文件也进行了必要的简化。虽然spring mvc从框架设计角度来说远远不如webwork那么有创意,但是也是一步一个脚印的改进,再配合上各种外围框架例如spring webflow等的支持,可以预见spring mvc会成长为webwork的劲敌。


七、支持动态语言ruby,groovy,beanshell

动态语言支持目前看来还比较简单,不够强大,但是表明了spring的一个态度,其实我个人希望spring能够加强这方面支持,甚至大胆一点,提供用动态脚本语言编写的bean组装配置。


八、异步jms支持,jmx支持,jca支持的功能完善

spring2.0自身提供了两类简单的jms containter,此外还提供了外部jms server的接口,另外jmx功能的支持,jca功能的支持都在进一步的完善过程中。

spring2.0在这几个方面的功能支持不是那么引入注目,毕竟普通java web应用很少使用这些方面。但是spring提供这些功能的完善支持意义却很深远,因为这些功能都是j2ee规范所要求提供的功能,也是传统应用服务器厂商相对比java开源框架的传统优势项目。一旦spring2.0对这些功能提供了完善的支持,那么将传统的java企业应用完全迁移到spring框架上面的技术障碍就一扫而空了。

因此spring是一个野心很大的框架,从现在状况来看,spring可以说是java开源框架之集大成者,从未来来看,spring将提供j2ee厂商所能够提供的所有必要的功能,最终spring将有可能取j2ee规范而代之,成为java企业开发的事实平台和事实标准。

总体来说,spring2.0将向未来的宏大目标又迈进了一大步。不过对于我等普通java web项目的开发需求来说,2.0的新特性也没有特别需要的。
6
1
评论 共 1 条 请登录后发表评论
1 楼 2011-12-03 18:52
学习一下

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 用matlab实现对一段视频中车辆的检测,使用gmm方法.

  • 利用matlab进行车辆检测与车型识别,包含详细的代码,

  • 在matlab平台下的车辆检测系统,亲测有效,可以作为学习使用

  • 点击上方“程序员大咖”,选择“置顶公众号”关键时刻,第一时间送达!“父亲养育了我,现在该我为他遮风挡雨了,只要能救父亲,我咋苦都行。”据凤凰网报道,江苏淮安 24 岁的刘晓晓的养父患上了急性髓系白血病 m2,因家中贫困无钱治病,刚毕业的刘晓晓找了份程序员的工作,边打工边奔波于上海与淮安之间为养父治病。而刘久勤的亲闺女自嫁到南京后便极少回家,两年来只给过 1000 元治疗费。24 岁的刘晓晓一出生便

  • 车辆检测基础-红色车辆检测 代码备注的很详细 %filename='d:\workspace\matlab workspace\数字图像处理\char2\char2_test\jmucorridor.avi'; filename='d:\workspace\matlab workspace\数字图像处理\char2\char2_test\sample4.mp4'; obj=videoreader(...

  • 今天算是手赚小木屋更新的第二篇文章了,好久没有写文章了,不知道写点什么!思考了好久还是和大家聊一聊苹果手机试玩app赚钱是真的吗,因为我自己也做这方面的兼职很久了,所以应该是有资格和大家聊一聊这方面的知识。 苹果手机试玩app赚钱是真的吗: 说实话因为很多人刚开始接触手机试玩,所以不知道真假, 想起几年前小木自己刚开始接触手机试玩的时候也是担心的要死,因为一个新的行业一个新的产品,以前从来没有接触过!担心是肯定担心的,我自己当时做试玩的时候先把自己的手机卡扣了下来,因为如果发现被骗了,那么至少手机没有卡对

  • 全国计算机等级考试三级网络技术考试大纲 1.了解大型网络系统规划、管理方法。 2.具备中小型网络系统规划、设计的基本能力。 3.掌握中小型网络系统组建、设备配置调试的基本技术。 4.掌握企事业单位中小型网络系统现场维护与管理基本技术。 5.了解网络技术的发展。 考试内容 一、网络规划与设计 1.网络需求分析。 2.网络规划设计。 3.网络设备及选型。 4.网络综合布线方案设计。 5.接入技术及案...

  • 1. volatile 原理 volatile 是轻量级的synchronized,保证了共享变量的可见性(一个线程修改共享变量,另一个变量能读到这个修改的值。),volatile不会引起线程上下文的切换和调度,所以比synchronized执行成本低。 volatile 修饰的共享变量,进行写操作的时候会多出一行lock开头的汇编指令。lock前缀的指令做了两件事: 1)将当前处理器的缓存...

  • 1、在线病毒分析网站: 以下网站上传样本后,很快就会在网页上出报告的: (1)这个网址报告格式很简洁,我很喜欢:http://camas.comodo.com/ (2)这个网址的报告最全面,而且会真的把传上去的样本跑一遍:http://anubis.iseclab.org/?action=home (3)这两个很像是同一个网站:http://www.xandora.net/upload/ ...

  • https://www.eicar.org/ 转载于:https://blog.51cto.com/2326749/2408478

global site tag (gtag.js) - google analytics
网站地图