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: