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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从ContextLoaderListener谈Spring父子容器

    SSM开发网上一找一大堆,可是有时候深入使用一下问题还不少,今天就来看看ContextLoaderListener配置带来的问题。

    zhangheng
  • JAVA 虚拟机类加载机制和字节码执行引擎

    我们知道java代码编译后生成的是字节码,那虚拟机是如何加载这些class字节码文件的呢?加载之后又是如何进行方法调用的呢?

    zhangheng
  • LogBack入门实践

    slf4j是The Simple Logging Facade for Java的简称,是一个简单日志门面抽象框架,它本身只提供了日志Facade API和一个...

    zhangheng
  • Objective-C的hook方案/ Method Swizzling

    Method Swizzling是改变一个selector的实际实现的技术。通过这一技术,我们可以在运行时通过修改类的分发表中selector对应的函数,来修改...

    freesan44
  • tf.estimator

    于小勇
  • Java .class文件是什么?

    java class 文件是对Java程序二进制文件格式的精确定义。每一个Java class文件都对一个Java类或者Java接口做出了全面描述。一个cla...

    MickyInvQ
  • Jmockdata随机模拟 Java 数据插件

         Jmockdta是一款实现模拟JAVA类型或对象的实例化并随机初始化对象的数据的工具框架。

    wuweixiang
  • 手写一个orm框架-2

    ​ 想要实现一个orm的功能,我觉得就是要将class和数据库中的表创建映射关系。把class的名称和表的名称,class属性名称和表的字段名称,属性类型与表的...

    何白白
  • SpringBoot整合多数据源的巨坑

    爱撒谎的男孩
  • python metaclass 详细说明

    在理解metaclass之前,我们需要先理解Python中的class。从某种程度上来说,Python中的class的定位比较特殊。

    用户5760343

扫码关注云+社区

领取腾讯云代金券