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

@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

标签: java, springmvc, spring

添加新评论