关系有点多,可能没法看,不过还算比较全。
@startuml
package org.springframework.web.servlet {
代码语言:javascript复制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 {
代码语言:javascript复制 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 {
代码语言:javascript复制abstract RequestMappingInfoHandlerMapping
abstract AbstractHandlerMethodAdapter
AbstractHandlerMethodMapping <|-- RequestMappingInfoHandlerMapping
HandlerAdapter <|-- AbstractHandlerMethodAdapter
}
package org.springframework.web.servlet.mvc.method.annotation {
代码语言:javascript复制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 {
代码语言:javascript复制class HttpRequestHandlerAdapter
class SimpleControllerHandlerAdapter
class WebContentInterceptor
HandlerAdapter <|-- HttpRequestHandlerAdapter
HandlerAdapter <|-- SimpleControllerHandlerAdapter
HandlerInterceptor <|-- WebContentInterceptor
}
package org.springframework.web.servlet.view {
代码语言:javascript复制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 {
代码语言:javascript复制class FreeMarkerViewResolver
class FreeMarkerView
AbstractTemplateViewResolver <|-- FreeMarkerViewResolver
AbstractTemplateView <|-- FreeMarkerView
}
package org.springframework.web.servlet.view.velocity {
代码语言:javascript复制class VelocityViewResolver
class VelocityLayoutViewResolver
AbstractTemplateViewResolver <|-- VelocityViewResolver
VelocityViewResolver <|-- VelocityLayoutViewResolver
}
package org.springframework.web.servlet.mvc.support {
代码语言:javascript复制class DefaultHandlerExceptionResolver
AbstractHandlerExceptionResolver <|-- DefaultHandlerExceptionResolver
}
package org.springframework.web.servlet.view.groovy {
代码语言:javascript复制class GroovyMarkupViewResolver
AbstractTemplateViewResolver <|-- GroovyMarkupViewResolver
}
package org.springframework.web.servlet.view.jasperreports {
代码语言:javascript复制class JasperReportsViewResolver
UrlBasedViewResolver <|-- JasperReportsViewResolver
}
package org.springframework.web.servlet.view.script {
代码语言:javascript复制class ScriptTemplateViewResolver
UrlBasedViewResolver <|-- ScriptTemplateViewResolver
}
package org.springframework.web.servlet.view.tiles3 {
代码语言:javascript复制class TilesViewResolver
UrlBasedViewResolver <|-- TilesViewResolver
}
package org.springframework.web.servlet.view.xslt {
代码语言:javascript复制class XsltViewResolver
UrlBasedViewResolver <|-- XsltViewResolver
}
package org.springframework.web.method {
代码语言:javascript复制class HandlerMethod
AbstractHandlerMethodMapping "1" *--> "N" HandlerMethod
}
package org.springframework.web.method.support {
代码语言:javascript复制interface HandlerMethodArgumentResolver
interface HandlerMethodReturnValueHandler
interface AsyncHandlerMethodReturnValueHandler
RequestMappingHandlerAdapter "1" *--> "N" HandlerMethodArgumentResolver
RequestMappingHandlerAdapter "1" *--> "N" HandlerMethodReturnValueHandler
HandlerMethodReturnValueHandler <|-- AsyncHandlerMethodReturnValueHandler
}
package org.springframework.web.servlet.mvc.annotation {
代码语言:javascript复制interface ModelAndViewResolver
RequestMappingHandlerAdapter "1" *--> "N" ModelAndViewResolver
}
package org.springframework.http.converter {
代码语言:javascript复制interface HttpMessageConverter<T>
RequestMappingHandlerAdapter "1" *--> "N" HttpMessageConverter
}
package org.springframework.web.method.annotation {
代码语言:javascript复制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 {
代码语言:javascript复制class LocaleChangeInterceptor
HandlerInterceptorAdapter <|-- LocaleChangeInterceptor
}
package org.springframework.web.servlet.resource {
代码语言:javascript复制class ResourceUrlProviderExposingInterceptor
HandlerInterceptorAdapter <|-- ResourceUrlProviderExposingInterceptor
}
package org.springframework.web.servlet.theme {
代码语言:javascript复制class ThemeChangeInterceptor
HandlerInterceptorAdapter <|-- ThemeChangeInterceptor
}
@enduml