`

Annotation风格的Spring MVC太好用了

    博客分类:
  • java
阅读更多
最近使用的Spring2.5中的spring-mvc版本,使用上简单了很多,特别是在要使用MultiActionController的情况下.

spring2.5之前,写一个MultiActionController需要以下步骤:

1. 写一个Controller继承MultiActionController
java 代码
  1. public class FooBarController extends MultiActionController {
  2. public ModelAndView foo(HttpServletRequest request, HttpServletResponse response) {
  3. .....
  4. }
  5. public ModelAndView bar(HttpServletRequest request, HttpServletResponse response) {
  6. .....
  7. }
  8. }

2. 写相应的action-servlet.xml
xml 代码
 
  1. <bean id="fooBarController" class="....FooBarController">  
  2.     <bean class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">  
  3.         <property name="mappings">  
  4.             <value>  
  5.                 /foofoo.htm=foo  
  6.                 /barbar.htm=bar  
  7.             </value>  
  8.         </property>  
  9.     </bean>  
  10. </bean>  
  11.   
  12. <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  13.     <property name="mappings">  
  14.         <value>  
  15.             /foo.htm=fooBarController  
  16.             /bar.htm=fooBarController  
  17.             </value>  
  18.     </property>  
  19. </bean>  


Annotation风格的Spring MVC

1. Controller不需要集成任何类,任何POJO都可以通过annotation成为controller
java 代码
  1. @Controller
  2. public class FooBarController {
  3. //Spriing MVC 2.5定义支持不同的返回值和参数,详细参考文档
  4. @RequestMaping("/foo.htm")
  5. public void foo() {
  6. ...
  7. }
  8. @RequestMaping("/bar.htm")
  9. public void bar() {
  10. ....
  11. }
  12. }


2. 写相应的action-servlet.xml
xml 代码
  1. <bean id="fooBarController" class="....FooBarController" />

如果使用auto-scan功能的话,上面的bean声明都不用在
action-servlet.xml里面写,spring容器会自动扫描到该注释的controller

Summary

Annotaion明显的简化了配置操作。controller没有用继承,仅仅是一个POJO,更加有利于test。

分享到:
评论
47 楼 karidyang 2008-12-03  
存在即合理
46 楼 karidyang 2008-12-03  
Qieqie 写道
我无知,我不清楚知名的Java Web框架作者们到底是为了什么,
难道是做一个“永远正确,够灵活”的万灵丹框架吗?

你很好,很棒,没什么事做不了,都能做,但是用起来就不爽、就麻烦。
我就是一个普通web应用,简单的CRUD。开发一个这样的Web接口类的东西,还需要这么精疲力尽,真是折腾!

现在是期待变革的时候了。

web框架,ror能做到的默认就基于惯例的、几乎没有配置,难道java就不能做到?人家都不怕性能,Java你怕什么性能?人家都不怕扩展、灵活性有问题,Java还在那边我神自在继续装聋,套用老罗一句话,“那是在装S”。


真是国际人开的国际玩笑。

我不要那么多,只要一点点:请你简单给我看!

Java这种语言,追求性能的首选的不是他,如果在简单化上面它也逊色于别人,那还有什么可混的?

简单化,不仅仅是语法糖,或者说语法糖只是很小一部分。
现在是开发套路上,应用思维上,就不要自我束缚了:小心把自己绑死。



有grails。敏捷开发有敏捷开发的路子,传统开发有传统开发的路子。
45 楼 yyjn12 2008-11-12  
caoyangx 写道
to Qieqie
不知道你在想什么?
自己没用过的东西,不要轻言讽刺,零配置必然是一个趋势,高手不怕简单而显示不出自己的能力。什么东西都要自己写一大堆不一定是高手,但肯定是脑痴。


你一定不是高手,居然读不懂Qieqie的意思.
或者你是故意在搞笑呢?
44 楼 renguistyle 2008-11-12  
头大!不过我是小小弟,让咱用啥咱就用啥。
43 楼 shiren1118 2008-11-09  
深入解析springmvc和webflow

这本书很好。看过了,就喜欢的不得了
42 楼 icelo 2008-11-08  
无语啦,不知道什么是尽头~
41 楼 wq13480 2008-09-04  
大家都是高人啊!服了!
40 楼 iop9090 2008-09-01  
我个人认为框架的选用应该从现实的项目出发
而不在于框架本身。。。
39 楼 liukaiyi 2008-08-31  
郁闷了
2年的工作 看见太多的 框架 “过眼云烟 ”
路过中
38 楼 niceo 2008-08-30  
呵呵!!!
我觉得有点麻烦,配置文件太多的话会造成系统的繁琐不精简的
!!!!
37 楼 slaser 2008-05-27  
刚用了spring MVC的annotation, 确实简单。
应该说在简化问题上迈出了一大步。
36 楼 jianfeng008cn 2008-04-30  
我也向抱怨啊 烦死人了 妈的 还不如以前搞dotnet了
35 楼 williamy 2008-04-28  
Qieqie 写道
zzmzzm 写道
楼上的要不您发明一个框架我们用用好吗


如果趋势是怎么样的,市场一定会被分化的,我们可以期待自己,也可以其他别人转向


我以前写过一个,很明显,没人关注嘛
34 楼 kkndone 2008-04-26  
关于找不到控制器的问题,我认为只要有定义良好而一致的命名方式(包路径和类名),找到它的速度会比在一个巨大的xml文件里查看的速度更快,而且我相信大部分人在做项目时已经自觉遵循了这个原则。退一步说,全文搜索一下也很快就能定位到了,不见得比在xml和代码里来回参照麻烦。
33 楼 Vstar 2008-04-25  
这个算是零配置吗?只不过是把配置从xml写到了代码里,我觉得这样有优点也有缺点。
优点在于可以少写两笔,而且看代码的时候就可以明白这个地方的用途。
而缺点就在于配置写在代码里首先给阅读造成了一定麻烦,比如对于一个稍大一些的项目,一个页面直接通过路径的名称在配置文件里一搜就可以搜到控制器等相关的信息,便于调试,而现在这样不得不搜遍所有的代码,找到annotation所在。其次就是单独在这一个地方使用spring的annotation倒还可以,如果以后需要添加其它需要的功能,而增加的这些恰恰也是使用annotation方式,结果使得整个代码遍布着annotation补丁,看着闹心。再者,如果复用这个逻辑,以往只需要在配置文件里改一下就可以了,现在不得翻遍代码,找那些annotation挨个改,累啊。
所以我觉得用Annotation来做Spring MVC最适合的应该是Hello World,对于稍大一点的应用来说,还是写xml为好
32 楼 kkndone 2008-04-25  
公司死规定用ssh,我偷偷用ibatis+spring mvc,既然说服不了别人,自己偷着乐就行了
31 楼 aniken 2008-04-25  
elvea 写道
个人感觉比Struts2简洁多了。              
之前发过Spring MVC Annotation的贴,    
http://www.iteye.com/post/412511
估计对Spring MVC有兴趣的人太少了。


不见得吧,本人就是从struts->webwork2->spring MVC一路过来的。目前暂停于spring MVC了。
据我了解国外用spring MVC的已经不少了。spring MVC的扩展性太强,做扩展相当方便。支持。
30 楼 JetMah 2008-04-25  
dearmite 写道
laodizhuq 写道
caoyangx 写道
to Qieqie
不知道你在想什么?
自己没用过的东西,不要轻言讽刺,零配置必然是一个趋势,高手不怕简单而显示不出自己的能力。什么东西都要自己写一大堆不一定是高手,但肯定是脑痴。


在一个复杂的项目工程中,把配置提出来汇总在某几个配置文件中是很好的方法,在几十甚至几百人合作的项目中,如果大家都不写配置,是很难协作的。当需要看一个配置时,人家就需要看一下你的代码,这样的代价也是不小的。



大家都不写配置文件,

也不等同于一点配置没有。

可以ANT生成嘛。!!
全自动,多好。



可惜人家大牛是想比这还要方便一些
29 楼 dearmite 2008-04-07  
laodizhuq 写道
caoyangx 写道
to Qieqie
不知道你在想什么?
自己没用过的东西,不要轻言讽刺,零配置必然是一个趋势,高手不怕简单而显示不出自己的能力。什么东西都要自己写一大堆不一定是高手,但肯定是脑痴。


在一个复杂的项目工程中,把配置提出来汇总在某几个配置文件中是很好的方法,在几十甚至几百人合作的项目中,如果大家都不写配置,是很难协作的。当需要看一个配置时,人家就需要看一下你的代码,这样的代价也是不小的。



大家都不写配置文件,

也不等同于一点配置没有。

可以ANT生成嘛。!!
全自动,多好。
28 楼 dearmite 2008-04-07  
Qieqie 写道
so,why?

Java从语言上没有假设应该使用什么路子到达目的

但是最好每一种都要有人去实践,并总结出成熟的 套路/API/框架 出来给人用。
大多数的Java Web应用是:web action + bo + dao
现在是某些“套路”垄断了其它的“套路”:不管3721,简单的、复杂的都按照这种套路在走路。
只是大家在这条路上有人走的是猫步、熊步、狗步 ,有的用拐杖,有的用金箍棒。。。
[漂亮的或丑陋的,但都在一条路上]

现在Java有没有成熟的、够有力量的其他路子可走:可能的话,我们完全应该在一个更近的路上走走猫步,去到达目的。
漂亮的舞姿,不一定只能在某一个舞台才可以引来惊叹。

现在有些好路子由其他语言在实践着,Java呢,等死啊?
有观点:Java不适合某些套路。抛开这个不说,追求更加简单化的方案却是合理的要求:
1、Java Web层的框架先简单下来[无/少配置,基于惯例]
2、....

我离题了,从Java Web框架讨论到Java应用开发上了。




极度赞成!!!!!

WEB框架本来的目的就是快速。(什么这个分离,那个分离,都是虚的 .net 就把一堆集成了,也挺成功,并且成了JAVA的痛)

现在WEB框架 搞的结果是用的之后开发反而变慢!!

相关推荐

Global site tag (gtag.js) - Google Analytics