2007-12-11

Annotation风格的Spring MVC太好用了

关键字: annotation spring mvc
最近使用的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。

评论
slaser 2008-05-27
刚用了spring MVC的annotation, 确实简单。
应该说在简化问题上迈出了一大步。
jianfeng008cn 2008-04-30
我也向抱怨啊 烦死人了 妈的 还不如以前搞dotnet了
williamy 2008-04-28
Qieqie 写道
zzmzzm 写道
楼上的要不您发明一个框架我们用用好吗


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


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


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


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



大家都不写配置文件,

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

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



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


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



大家都不写配置文件,

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

可以ANT生成嘛。!!
全自动,多好。
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框架 搞的结果是用的之后开发反而变慢!!
laodizhuq 2008-03-26
caoyangx 写道
to Qieqie
不知道你在想什么?
自己没用过的东西,不要轻言讽刺,零配置必然是一个趋势,高手不怕简单而显示不出自己的能力。什么东西都要自己写一大堆不一定是高手,但肯定是脑痴。


在一个复杂的项目工程中,把配置提出来汇总在某几个配置文件中是很好的方法,在几十甚至几百人合作的项目中,如果大家都不写配置,是很难协作的。当需要看一个配置时,人家就需要看一下你的代码,这样的代价也是不小的。
Saro 2008-03-26
感觉非常好,使用Annotation后,写mvc层时非常方便。能把任何pojo变成Controller的功能真是太棒了。

这是网上的一个教程,讲得很详细。
http://www.ibm.com/developerworks/cn/java/j-lo-spring25-mvc/index.html
或与非 2008-03-23
李超群 写道
这个世界什么都缺,就是不缺抱怨。


这个世界什么都缺,就是不缺抱怨别人没做好或者抱怨别人只会抱怨别人没做好
pythonjyc 2008-01-07
如果机器都能做得,还要人做什么 :)
andyao 2008-01-04
qieqie回复很快嘛,经常在线?
Qieqie 2008-01-04
抱怨它麻烦,自然不能只停留在抱怨的角色上,而是把抱怨变为需求,深耕代码,
哪一天我正式release出理想中的Paoding Rest 1.0,到时再狠狠发话
ppig 2008-01-04
不得不承认webframework还是很麻烦
不得不承认qieqie同学很犬儒
如果觉得不爽,你就去尝试改变咯,在项目里当然要减少配置和基于惯例,关键是这些动"要有",而不是这些东西"有没有" - 没有就去build一个咯.
话说回来,多样蛮好的,至少你可以根据需要去选择.如果大家都"契约"了还真没什么意思了.
Qieqie 2007-12-26
caoyangx 写道
to Qieqie
不知道你在想什么?
自己没用过的东西,不要轻言讽刺,零配置必然是一个趋势,高手不怕简单而显示不出自己的能力。什么东西都要自己写一大堆不一定是高手,但肯定是脑痴。


你是不是搞错对象了?
就像我前面看错人的帖子了
caoyangx 2007-12-26
to Qieqie
不知道你在想什么?
自己没用过的东西,不要轻言讽刺,零配置必然是一个趋势,高手不怕简单而显示不出自己的能力。什么东西都要自己写一大堆不一定是高手,但肯定是脑痴。
williamy 2007-12-23
Qieqie 写道
zzmzzm 写道
楼上的要不您发明一个框架我们用用好吗


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


或许我的开源的框架正是你们想要得
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

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

andyao
搜索本博客
我的相册
5420ab30-72c6-3b30-9492-388a5a0e5e66-thumb
Snap1
共 1 张
存档
最新评论