SpringMVC学习一:注解之前提

    Handler的作用:通过HandlerMapping把不同的url映射到各自对应的Handler,Handler处理请求并响应内容给客户端。

    Spring MVC 在 Spring 2.5 发布中新添加了一种基于注解的 Controller 形式。借助于与 Spring 2.5 一同发布的容器内 <context:component-scan> 功能支持,基于注解的 Controller 几乎可以达到 XML 零配置,进而极大地提高我们的开发效率。 

    和其它 Controller 一样,基于注解的 Controller 同样有相应的 HandlerMapping,那就是 DefaultAnnotationHandlerMapping。同样,也有相应的 HandlerAdapter,那就是 AnnotationMethodHandlerAdapter。我们也可以自己不把 Controller 注册到容器里,需要web.xml配置 <context:component-scan>完成。开发基于注解的 Controller,我们需要做以下准备工作: 

       ● <context:compnent-scan> 

<!-- 切记,这不是必需的!除非你把注解的 Controller 一个个的注册到容器中。相信大家还是喜欢用 
     context:compnent-scan 吧。不要认为在 Spring MVC 中才提到 context:component-scan,
     就认为它只能扫描 @Controller。component-scan 默认扫描的注解类型是 @Component,不过,在 
     @Component 语义基础上细化后的 @Repository, @Service 和 @Controller 也同样可以获得 
     component-scan 的青睐 -->  
<context:component-scan base-package="org.zachary.spring3.anno.web" />  

     ● HandlerMapping 

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">  
  <description>  
      这点是必需的还是非必需的呢?如果定义了 DefaultAnnotationHandlerMapping,它就可以将请求来的 url 和被
      注解了 @RequesMapping 的指进行匹配。当然,说这句话的前提是定义 DefaultAnnotationHandlerMapping 的
      优先级比定义了其它的 HandlerMapping 的优先级要高(如果定义了其它的话)。如果没有定义 
      DefaultAnnotationHandlerMapping,并不代表不能映射到相应的 handler 上。因为如果你定义了其它的 
      HandlerMapping,请求过来的 url 和注解了的 @RequestMapping 里的值正好能匹配上,那么没有 
      DefaultAnnotationHandlerMapping,@Controller 一样可以如鱼得水的被捕获到。当然,如果你要使用基于注解的
       @Controller,最好还是老老实实地注册 DefaultAnnotationHandlerMapping。  
  </description>  
</bean>  

     ● HandlerAdaptor 

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
  <description>  
      和上面的 HandlerMapping 一样,是必需的还是非必需的呢?
      Spring MVC 中,如果我们没有注册任何 HandlerAdaptor 到容器中,注意,我说的是任何。那么 DispatcherServlet
      将启用后备的几个默认使用的 HandlerAdaptor 实现,包括:  
          org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter  
          org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter  
          org.springframework.web.servlet.mvc.AnnotationMethodHandlerAdaptor  
      看见没,如果我们没有注册任何的 HandlerAdaptor,框架会准备 AnnotationMethodHandlerAdaptor 的。可是
      由于某些原因,我们需要为某些 HandlerAdaptoer 进行一些定制化,即在容器中注册了某个 HandlerAdaptor,
      那么很抱歉,框架只会启用你注册的那个,而框架本身准备的不会被启用。所以,你一旦为某个 HandlerMapping 进行
      了定制化,请别忘了把其它的 HandlerAdaptor 也注册进来,即便这些不需要定制化。否则的话,后果你是可以想象的。
      当然,除非你确保你真的只需要那一个你注册进容器的 HandlerAdaptor,否则,我再啰嗦一遍,别忘了把其它的 
      HandlerAdaptor 也注册进来。  
  </description>  
</bean>  

 

转载于:https://my.oschina.net/wliming/blog/805771

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值