RESTEasy当中HttpServletDispatcher,FilterDispatcher和SpringContextLoaderListener的整合方式(下)
这这篇文章中,主要分析一下上篇当中看的一些classes的关系结构图。首先是核心的SpringBeanProcessor
和围绕着它一系列的classes的分析。
SpringBeanProcessor
SpringBeanProcessor
的「类图」如下:
看下它的constructor:
可以看到注入了几个resteasy的核心classes。
下面是postProcessBeanFactory()
的逻辑:
上面的方法调用processBean()
方法,下面是processBean()
方法的逻辑:
把上面的SpringBeanProcessor
用起来的class是SpringContextLoaderListener
:
如上图所示,SpringContextLoaderListener
调用SpringContextLoaderSupport
。其中SpringContextLoaderSupport
里面有一个customizeContext()
方法。这个方法的逻辑如下:
可以看到这个方法里面会加载SpringBeanProcessor
。然后看一下SpringContextLoaderListener
这个class里面的具体方法。
SpringContextLoaderListener
看一下这个class的customizeContext()
方法:
可以看到方法里对SpringBeanProcessor
的调用。
最后看一下SpringBeanProcessorServletAware
这个class。
SpringBeanProcessorServletAware
这个class的说明如下:
从上面的class可以看到这个SpringBeanProcessorServletAware
实际是扩展了SpringBeanProcess
,然后实现了spring的ServletContextAware
接口。以下是相关的class diagram:
可以看到这个封装用于servlet的环境,并且是实现了spring的ServletContextAware
接口。
以上就是对resteasy-spring
模块的一个基本分析。
最后给出与resteasy-spring
模块加载机制相关的jira issues: