<b>深化Spring MVC framework之总体解析</b>[Java编程]
本文“<b>深化Spring MVC framework之总体解析</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在当今的MVC framework里,仿佛Webwork2渐渐成为主流, Webwork2+SpringFramework的组合变得越来越风行.这仿佛意味着Spring自带的MVC framework远比Webwork2差,所以大家纷纷用Webwork2来替换.确切,Spring的MVC framework不算是整个Spring的核心部件,但它的威力却超越了很多人的想象.很多人包含xiecc认为Spring的MVC framework是非常优异的,乃至比Webwork2更优异.
下面摆列一下Spring的MVC framework在计划时做出的一些重要的决意,并将之和相关的MVC framework如Webwork2或struts举行比较:
1、Spring的整个MVC配置是基于IOC容器的
与struts或webwork2相比,这是一个ms有点奇特的决意,看一下Spring MVC的配置文件,最早看到的不是action大概form,而是一些有着特命名字的bean,Bean下面的配置是一些简单或有点复杂的属性.我们看到的是机械更简单的数据构造,而不是人更简单理解的元素.
但是这恰好是Spring的MVC强盛的本源!因为它的配置就是Spring的核心IOC容器的配置,这意味着全部IOC容器的威力都可以在这里展示,我们可认为所欲为地对Spring MVC举行扩大和加强,我们可以完成在别的MVC framwork中很多难以想象的任务.想扩大新的URL映射方法吗?要换一个themeResolver或LocalReolver的实现吗?想在页面中显示新范例的View(比方说RDF,呵呵,一个小奥秘:xiecc是研究语义网的,固然成天游手好闲,不写论文,只写八卦)?乃至想直接在Controller里定义AOP吗?这些对Spring的MVC来说都是小菜一碟.
我没有细心研究过Webwork2的扩大机制,我知道通过Webwork2的interceptor机制,可以举行很多的扩大,乃至有一个简单简单的IOC容器.但不管它有多强盛,供应了多少扩大点.它的威力都很难和真正的IOC容器相比.而struts的plugin功效则是出名的滥,固然它也供应了plugin机制.
Spring采取IOC配置的另一个缘由是使Spring的MVC与Spring的IOC容器的整合变得非常的简单.Spring供应了与struts与webwork2的整合,但是这样整合都需求在举行间接的包装,感受总不是很自然.并且还会招致一个概念多个配置,webwork2就需求在Spring里配置bean,再配置自己的xwork文件.想象一下吧,我们的bean直接就是一个controller,直接可以完成MVC的全部任务,这是多少爽的感受.
Rod Johnson采取IOC容器来实现的另一个缘由是这会削减好多开辟工作量.看一下urlMapping吧,它供应的property本身就是一个HashMap,只有配置完成,我们的bean里的数据就自然存在了,哈哈,好爽吧.不用象struts那样解析XML,再把它的内容一项一项地读到HashMap里.
固然这样的配置会有点独特,但假定我们对Spring的IOC容器非常熟习的话,会发现它非常的密切,也非常的简单.
最后是一个简单的小奥秘,Spring怎么知道某个bean的配置就是urlMapping?另一个bean的配置就是viewResolver?其实很简单,把全部的bean全部读到内存里,然后通过bean的名字或范例去找就行了.通过名字去找就是简单的getBean办法,通过范例去找则利用了BeanFactoryUtils.beansOfTypeIncludingAncestors的静态办法.
2、Spring供应了明确的Model, View概念和呼应的数据构造
在Spring里有一个风趣的数据范例叫做ModelAndView,它只是简单地把要显示的数据和显示的后果封装在一个类里.但是它却供应了明确的MVC概念,特别是model概念的强化,使程序的逻辑变得更清楚了.
记得从前在Struts里写程序里的时刻,为了显示数据常常自己把东西放到HttpSession或HttpServletRequest里(或set到form里,固然不太有效),这造成了model概念的模糊,并且也招致了struts与JSP页面的紧耦合.假定我们要替换成Veloctiy,就得别的加一个plugin,因为在velocity里数据是不需求不放到request里的.
Webwork2里夸大的是与Web framework解耦和它的command情势的简单性,因此在它的action里只有简单的get或set办法,假定返回数据,也只是简单地返回一个String.当然这样的实现有它的好处,但是它淡化了model和view的概念.Rod Johnson认为Webwork2里的Action同时包含了Action和Model的职责,这样一个类的职责太多,不是一个很好的计划.当然Jason Carreira不太认同这种概念,因为Action里的model对象完成可以delege给别的对象.但不管怎样,这种争辩的本源在于Webwork2里淡化了model, view乃至web的概念.仁者见仁,智者见智,最后的后果还是看个人喜好好吧.
以上是“<b>深化Spring MVC framework之总体解析</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |