SpringMVC类图关系

关系有点多,可能没法看,不过还算比较全。

@startuml

package org.springframework.web.servlet {

abstract HttpServletBean

abstract FrameworkServlet

class DispatcherServlet

interface HandlerMapping

interface HandlerAdapter

interface ViewResolver

interface HandlerExceptionResolver

interface HandlerInterceptor

interface AsyncHandlerInterceptor

interface View 

class HandlerExecutionChain

HttpServletBean <|-- FrameworkServlet

FrameworkServlet <|-- DispatcherServlet

DispatcherServlet "1" *--> "N" HandlerMapping

DispatcherServlet "1" *--> "N" HandlerAdapter

DispatcherServlet "1" *--> "N" ViewResolver

DispatcherServlet "1" *--> "N" HandlerExceptionResolver

HandlerExecutionChain "1" *--> "N" HandlerInterceptor

AsyncHandlerInterceptor <|-- HandlerInterceptor

}

package org.springframework.web.servlet.handler {

abstract AbstractHandlerMapping


abstract AbstractHandlerMethodMapping

abstract AbstractUrlHandlerMapping


class SimpleUrlHandlerMapping

abstract AbstractDetectingUrlHandlerMapping


class BeanNameUrlHandlerMapping

class SimpleServletHandlerAdapter


abstract AbstractHandlerExceptionResolver

abstract AbstractHandlerMethodExceptionResolver

class SimpleMappingExceptionResolver

class MappedInterceptor

abstract HandlerInterceptorAdapter

class ConversionServiceExposingInterceptor

class UserRoleAuthorizationInterceptor

class WebRequestHandlerInterceptorAdapter


HandlerMapping <|-- AbstractHandlerMapping


AbstractHandlerMapping  <|-- AbstractHandlerMethodMapping

AbstractHandlerMapping  <|-- AbstractUrlHandlerMapping


AbstractUrlHandlerMapping <|-- SimpleUrlHandlerMapping

AbstractUrlHandlerMapping <|-- AbstractDetectingUrlHandlerMapping


AbstractDetectingUrlHandlerMapping <|-- BeanNameUrlHandlerMapping


HandlerAdapter <|-- SimpleServletHandlerAdapter

HandlerExceptionResolver <|-- AbstractHandlerExceptionResolver

AbstractHandlerExceptionResolver <|-- AbstractHandlerMethodExceptionResolver

AbstractHandlerExceptionResolver <|-- SimpleMappingExceptionResolver

AbstractHandlerMapping "1" *--> "N" HandlerInterceptor

HandlerInterceptor <|-- MappedInterceptor

AsyncHandlerInterceptor <|-- HandlerInterceptorAdapter

HandlerInterceptorAdapter <|-- ConversionServiceExposingInterceptor

HandlerInterceptorAdapter <|-- UserRoleAuthorizationInterceptor

AsyncHandlerInterceptor <|-- WebRequestHandlerInterceptorAdapter

}

package org.springframework.web.servlet.mvc.method {

abstract RequestMappingInfoHandlerMapping

abstract AbstractHandlerMethodAdapter


AbstractHandlerMethodMapping <|-- RequestMappingInfoHandlerMapping

HandlerAdapter <|-- AbstractHandlerMethodAdapter

}

package org.springframework.web.servlet.mvc.method.annotation {

class RequestMappingHandlerMapping

class RequestMappingHandlerAdapter


class ExceptionHandlerExceptionResolver

class ResponseStatusExceptionResolver

class ModelAndViewMethodReturnValueHandler

class ViewMethodReturnValueHandler

class ResponseBodyEmitterReturnValueHandler

class StreamingResponseBodyReturnValueHandler

abstract AbstractMessageConverterMethodProcessor

class HttpHeadersReturnValueHandler

class CallableMethodReturnValueHandler

class DeferredResultMethodReturnValueHandler

class AsyncTaskMethodReturnValueHandler

class RequestResponseBodyMethodProcessor

class ViewNameMethodReturnValueHandler

class ModelAndViewResolverMethodReturnValueHandler

class PathVariableMethodArgumentResolver

class PathVariableMapMethodArgumentResolver

class ServletModelAttributeMethodProcessor

class MatrixVariableMapMethodArgumentResolver

class MatrixVariableMethodArgumentResolver

class RequestPartMethodArgumentResolver

class ServletCookieValueMethodArgumentResolver

class SessionAttributeMethodArgumentResolver

class RequestAttributeMethodArgumentResolver

class ServletRequestMethodArgumentResolver

class ServletResponseMethodArgumentResolver

class HttpEntityMethodProcessor

class RedirectAttributesMethodArgumentResolver

class UriComponentsBuilderMethodArgumentResolver


RequestMappingInfoHandlerMapping <|-- RequestMappingHandlerMapping

AbstractHandlerMethodAdapter <|-- RequestMappingHandlerAdapter


AbstractHandlerMethodExceptionResolver <|-- ExceptionHandlerExceptionResolver

AbstractHandlerExceptionResolver <|-- ResponseStatusExceptionResolver

HandlerMethodReturnValueHandler <|-- ModelAndViewMethodReturnValueHandler

HandlerMethodReturnValueHandler <|-- ViewMethodReturnValueHandler

AsyncHandlerMethodReturnValueHandler <|-- ResponseBodyEmitterReturnValueHandler

HandlerMethodReturnValueHandler <|-- StreamingResponseBodyReturnValueHandler

AbstractMessageConverterMethodArgumentResolver <|-- AbstractMessageConverterMethodProcessor

HandlerMethodReturnValueHandler <|-- AbstractMessageConverterMethodProcessor

HandlerMethodReturnValueHandler <|-- HttpHeadersReturnValueHandler

AsyncHandlerMethodReturnValueHandler <|-- CallableMethodReturnValueHandler

AsyncHandlerMethodReturnValueHandler <|-- DeferredResultMethodReturnValueHandler

AsyncHandlerMethodReturnValueHandler <|-- AsyncTaskMethodReturnValueHandler

AbstractMessageConverterMethodProcessor <|-- RequestResponseBodyMethodProcessor

HandlerMethodReturnValueHandler <|-- ViewNameMethodReturnValueHandler

HandlerMethodReturnValueHandler <|-- ModelAndViewResolverMethodReturnValueHandler

AbstractNamedValueMethodArgumentResolver <|-- PathVariableMethodArgumentResolver

HandlerMethodArgumentResolver <|-- PathVariableMapMethodArgumentResolver

ModelAttributeMethodProcessor <|-- ServletModelAttributeMethodProcessor

HandlerMethodArgumentResolver <|-- MatrixVariableMapMethodArgumentResolver

AbstractNamedValueMethodArgumentResolver <|-- MatrixVariableMethodArgumentResolver

AbstractMessageConverterMethodArgumentResolver <|-- RequestPartMethodArgumentResolver

AbstractCookieValueMethodArgumentResolver <|-- ServletCookieValueMethodArgumentResolver

AbstractNamedValueMethodArgumentResolver <|-- SessionAttributeMethodArgumentResolver

AbstractNamedValueMethodArgumentResolver <|-- RequestAttributeMethodArgumentResolver

HandlerMethodArgumentResolver <|-- ServletRequestMethodArgumentResolver

HandlerMethodArgumentResolver <|-- ServletResponseMethodArgumentResolver

AbstractMessageConverterMethodProcessor <|-- HttpEntityMethodProcessor

HandlerMethodArgumentResolver <|-- RedirectAttributesMethodArgumentResolver

HandlerMethodArgumentResolver <|-- UriComponentsBuilderMethodArgumentResolver

}

package org.springframework.web.servlet.mvc {

class HttpRequestHandlerAdapter

class SimpleControllerHandlerAdapter

class WebContentInterceptor

HandlerAdapter <|-- HttpRequestHandlerAdapter

HandlerAdapter <|-- SimpleControllerHandlerAdapter

HandlerInterceptor <|-- WebContentInterceptor

}

package org.springframework.web.servlet.view {

class BeanNameViewResolver

class ContentNegotiatingViewResolver

class ViewResolverComposite

abstract AbstractCachingViewResolver

class XmlViewResolver

class UrlBasedViewResolver

class AbstractTemplateViewResolver

class InternalResourceViewResolver

class ResourceBundleViewResolver

abstract AbstractView

abstract AbstractUrlBasedView

abstract AbstractTemplateView

class InternalResourceView

class JstlView

class RedirectView


ViewResolver <|-- BeanNameViewResolver

ViewResolver <|-- ContentNegotiatingViewResolver

ViewResolver <|-- ViewResolverComposite

ViewResolver <|-- AbstractCachingViewResolver

AbstractCachingViewResolver <|-- UrlBasedViewResolver

AbstractCachingViewResolver <|-- XmlViewResolver

AbstractCachingViewResolver <|-- ResourceBundleViewResolver

UrlBasedViewResolver <|-- AbstractTemplateViewResolver

UrlBasedViewResolver <|-- InternalResourceViewResolver

View <|-- AbstractView

AbstractView <|-- AbstractUrlBasedView

AbstractUrlBasedView <|-- AbstractTemplateView

AbstractUrlBasedView <|-- InternalResourceView

AbstractUrlBasedView <|-- RedirectView

InternalResourceView <|-- JstlView

}

package org.springframework.web.servlet.view.freemarker {

class FreeMarkerViewResolver

class FreeMarkerView

AbstractTemplateViewResolver <|-- FreeMarkerViewResolver

AbstractTemplateView <|-- FreeMarkerView

}

package org.springframework.web.servlet.view.velocity {

class VelocityViewResolver

class VelocityLayoutViewResolver

AbstractTemplateViewResolver <|-- VelocityViewResolver

VelocityViewResolver <|-- VelocityLayoutViewResolver

}

package org.springframework.web.servlet.mvc.support {

class DefaultHandlerExceptionResolver

AbstractHandlerExceptionResolver <|-- DefaultHandlerExceptionResolver

}

package org.springframework.web.servlet.view.groovy {

class GroovyMarkupViewResolver

AbstractTemplateViewResolver <|-- GroovyMarkupViewResolver

}

package org.springframework.web.servlet.view.jasperreports {

class JasperReportsViewResolver

UrlBasedViewResolver <|-- JasperReportsViewResolver

}

package org.springframework.web.servlet.view.script {

class ScriptTemplateViewResolver

UrlBasedViewResolver <|-- ScriptTemplateViewResolver

}

package org.springframework.web.servlet.view.tiles3 {

class TilesViewResolver

UrlBasedViewResolver <|-- TilesViewResolver

}

package org.springframework.web.servlet.view.xslt {

class XsltViewResolver

UrlBasedViewResolver <|-- XsltViewResolver

}

package org.springframework.web.method {

class HandlerMethod

AbstractHandlerMethodMapping "1" *--> "N" HandlerMethod

}

package org.springframework.web.method.support {

interface HandlerMethodArgumentResolver

interface HandlerMethodReturnValueHandler

interface AsyncHandlerMethodReturnValueHandler

RequestMappingHandlerAdapter "1" *--> "N" HandlerMethodArgumentResolver

RequestMappingHandlerAdapter "1" *--> "N" HandlerMethodReturnValueHandler

HandlerMethodReturnValueHandler <|-- AsyncHandlerMethodReturnValueHandler

}

package org.springframework.web.servlet.mvc.annotation {

interface ModelAndViewResolver

RequestMappingHandlerAdapter "1" *--> "N" ModelAndViewResolver

}

package org.springframework.http.converter {

interface HttpMessageConverter<T>

RequestMappingHandlerAdapter "1" *--> "N" HttpMessageConverter

}

package org.springframework.web.method.annotation {

abstract AbstractNamedValueMethodArgumentResolver

class RequestParamMapMethodArgumentResolver

class ModelAttributeMethodProcessor

abstract AbstractMessageConverterMethodArgumentResolver

class RequestHeaderMethodArgumentResolver

class RequestHeaderMapMethodArgumentResolver

abstract AbstractCookieValueMethodArgumentResolver


class ExpressionValueMethodArgumentResolver

class ModelMethodProcessor

class MapMethodProcessor

class ErrorsMethodArgumentResolver

class SessionStatusMethodArgumentResolver



class RequestParamMethodArgumentResolver


HandlerMethodArgumentResolver <|-- AbstractNamedValueMethodArgumentResolver

AbstractNamedValueMethodArgumentResolver <|-- RequestHeaderMethodArgumentResolver

AbstractNamedValueMethodArgumentResolver <|-- AbstractCookieValueMethodArgumentResolver

AbstractNamedValueMethodArgumentResolver <|-- ExpressionValueMethodArgumentResolver

AbstractNamedValueMethodArgumentResolver <|-- RequestParamMethodArgumentResolver

HandlerMethodArgumentResolver <|-- RequestParamMapMethodArgumentResolver

HandlerMethodArgumentResolver <|-- ModelAttributeMethodProcessor

HandlerMethodReturnValueHandler <|-- ModelAttributeMethodProcessor

HandlerMethodArgumentResolver <|-- AbstractMessageConverterMethodArgumentResolver

HandlerMethodArgumentResolver <|-- RequestHeaderMapMethodArgumentResolver

HandlerMethodArgumentResolver <|-- ModelMethodProcessor

HandlerMethodReturnValueHandler <|-- ModelMethodProcessor

HandlerMethodArgumentResolver <|-- MapMethodProcessor

HandlerMethodReturnValueHandler <|-- MapMethodProcessor

HandlerMethodArgumentResolver <|-- ErrorsMethodArgumentResolver

HandlerMethodArgumentResolver <|-- SessionStatusMethodArgumentResolver

}

package org.springframework.web.servlet.i18n {

class LocaleChangeInterceptor

HandlerInterceptorAdapter <|-- LocaleChangeInterceptor

}

package org.springframework.web.servlet.resource {

class ResourceUrlProviderExposingInterceptor

HandlerInterceptorAdapter <|-- ResourceUrlProviderExposingInterceptor

}

package org.springframework.web.servlet.theme {

class ThemeChangeInterceptor

HandlerInterceptorAdapter <|-- ThemeChangeInterceptor

}

@enduml