Day72-回顾SpringMVC篇之处理器映射器与处理器适配器最佳实践

Day72-回顾SpringMVC篇之处理器映射器与处理器适配器最佳实践

  • 组件自动扫描

    web开发中,我们基本上不在通过xml或者java配置来创建一个bean的实例,而是直接通过组件扫描实现bean的配置,如果过要扫描过个包,多个包之间用,隔开即可:

    <!--配置包扫描-->
        <context:component-scan base-package="com.fu" use-default-filters="true">
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
        </context:component-scan>
    
  • handlerMapping

​ 正常情况下,我们在项目汇总使用的是RequestMappingHandlerMapping,这个是根据处理器中的注解,来匹配请求(即@RequestMapping注解中url属性).因为我们都是同过实现类来开发接口的,相当于还是一个类一个接口,所以我们可以通过RequestMappingHandlerMapping来做处理器映射器,这样我们可以在一个类中开发出多个接口.

  • handlerAdater

​ 对于上面提到的通过@RequesMapping注解所定义出来的接口方法,这些方法的调用都是通过RequestMaHandlerAdapter这个适配器来实现.

例如我们开发一个接口:

package com.fu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloController {

    @RequestMapping("/hello")
    public ModelAndView hello(){
        ModelAndView mv = new ModelAndView("hello");
        mv.addObject("name","fushijie");
        return mv;
    }
}

要能够访问这个接口,我们需要RequestMappingHandlerMapping才能定位带需要执行的方法,需要RequestMapingHandlerAdater,才能执行定位到的方法,修改SpringMVC的配置文件如下:

    <!--配置包扫描-->
    <context:component-scan base-package="com.fu" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!--&lt;!&ndash;配置处理器映射器器&ndash;&gt;-->
    <!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"-->
          <!--id="requestMappingHandleMapping"/>-->

    <!--&lt;!&ndash;配置处理器适配器&ndash;&gt;-->
    <!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"-->
          <!--id="requestMappingHandlerAdapter"/>-->

    <!--此配置可代替上面映射器和适配器配置-->
    <mvc:annotation-driven/>

    <!--配置视图解析器-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

然后启动项目,访问localhost:8080/hello,就可以看到相应的页面.

  • 继续优化

    由于开发中,我们常用的是RequestMappingHandlerMapping和RequestMappingHandlerAdater,这两个有一个简化的写法,如下:

    <!--此配置可代替上面映射器和适配器配置-->
        <mvc:annotation-driven/>
    

    可以用这一行配置,代替RequestMappingHandlerMapping和RequestMappingHandlerAdapter的两行配置.这就是实际开发最终配置的形态.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿杰杰杰のblog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值