2021-12-18 SpringMVC中根据当前Handler

2021-12-18  本文已影响0人  归去来ming

DispatcherServlet中的getHandlerAdapter方法:


image.png

跟踪supports方法,发现实现类有5个:


image.png

进入SimpleControllerHandlerAdapter看一下:

    @Override
    public boolean supports(Object handler) {
        return (handler instanceof Controller);
    }

是看自己写的controller是不是实现了Spring的Controller接口。但是查看公司的代码,或平时自己写的demo,并未实现Controller接口。我们经常使用的是注解@RequestMapping,所以进入AnnotationMethodHandlerAdapter看一下:

    @Override
    public boolean supports(Object handler) {
        return getMethodResolver(handler).hasHandlerMethods();
    }

跟踪方法hasHandlerMethods:

    // HandlerMethodResolver.java
    public final boolean hasHandlerMethods() {
        return !this.handlerMethods.isEmpty();
    }

    // 看到了RequestMapping
    protected boolean isHandlerMethod(Method method) {
        return AnnotationUtils.findAnnotation(method, RequestMapping.class) != null;
    }
上一篇 下一篇

猜你喜欢

热点阅读