9.Spring MVC重要组件-HandlerMapping


       从上图可以看出,HandlerMapping的继承结构分为两支,一支继承自 AbstractHandlerMethodMapping,另一之继承自 AbstractUrlHandlerMapping,而这两支都继承自抽象类AbstractHandlerMapping;所以,我们先分析AbstractHandlerMapping,然后再分析AbstractHandlerMethodMapping和AbstractUrlHandlerMapping;

AbstractHandlerMapping

       AbstractHandlerMapping是HandlerMapping的抽象实现;采用了模板模式对整体进行设计,子类通过重写模板方法即可完成具体业务;

       HandlerMapping的作用是根据request查找Handler和Interceptors;

      获取Handler的过程通过模板方法getHandlerInternal交给子类去实现;AbstractHandlerMapping中保存了所用配置的Interceptor,在获取到Handler后会自己根据从request提取的lookupPath将相应的Interceptors装配上去,当然子类也可以通过getHandlerInternal方法设置自己的Interceptor,getHandlerInternal的返回值为Object类型;

创建AbstractHandlerMapping之器

       AbstractHandlerMapping继承了WebApplicationObjectSupport;

       初始化时会自动调用模板方法initApplicationContext,AbstractHandlerMapping的创建就是在initApplicationContext方法里实现的;

protected void initApplicationContext() throws BeansException {
    //模板方法,用于给子类提供一个添加(或者修改)Interceptors的入口
    //这个方法,在Spring并没有使用
    extendInterceptors(this.interceptors);
    //将Spring MVC容器及父容器中的所有MappedInterceptor类型的Bean添加到mappedInterceptors属性
    detectMappedInterceptors(this.mappedInterceptors);
    //初始化Interceptor
    initInterceptors();
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值