分享
 
 
 

Spring 2.0的新特性点评

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

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框架上面的技术障碍就一扫而空了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有