美文网首页
Spring mvc之MappingRegistry类

Spring mvc之MappingRegistry类

作者: engineer_tang | 来源:发表于2021-04-10 13:21 被阅读0次

    1. 简介

    该类是AbstractHandlerMethodMapping类的默认作用域的内部类。
    方法调用栈如下:
    getHandler方法->getHandlerInternal方法->lookupHandlerMethod方法

    1.1 urlLookup属性

    private final MultiValueMap<String, T> urlLookup = new LinkedMultiValueMap<>();
    

    它是MultiValueMap<String, T>类型,MultiValueMap是spring-core包下定义的key-value多值Map接口定义,一个用于存储一个key对应多个值的情况。


    image.png

    从截图中可以看到key值就是url访问路径,而value是一个LinkedList对象。

    1.2 mappingLookup属性

    private final Map<T, HandlerMethod> mappingLookup = new LinkedHashMap<>();
    
    image.png

    这个属性通过是一个普通的LinkedHashMap对象,key是访问接口路径URL,value是一个HandlerMethod对象。

        private void addMatchingMappings(Collection<T> mappings, List<Match> matches, HttpServletRequest request) {
            for (T mapping : mappings) {
                T match = getMatchingMapping(mapping, request);
                if (match != null) {
                    matches.add(new Match(match, this.mappingRegistry.getMappings().get(mapping)));
                }
            }
        }
    

    通过上一步根据URL获取到的RequestMappingInfo的请求参数没问题后,再根据这个步骤获取HandlerMethod对象。

    相关文章

      网友评论

          本文标题:Spring mvc之MappingRegistry类

          本文链接:https://www.haomeiwen.com/subject/hifohltx.html