Resteasy当中SpringContextLoaderListener的工作机制
下面是一个SpringContextLoaderListener
的基础配置:
其中ResteasyBootstrap
里面会把ResteasyDeployment
设置好:
从上面的代码还可以看到deployment
被放进了servletContext
。下面是contextInitialized()
方法的时序图:
回过头看SpringContextLoaderListener
,这里面核心的方法是customizeContext()
:
下面是customizeContext()
方法的时序图:
这个方法把servletContext
注入了springContextLoaderSupport
。看下SpringContextLoaderSupport
:
可以看到在SpringContextLoaderSupport
里面,把servletContext
里面保存的RestesyDeployment
取出来,并传给SpringBeanProcessor
的constructor
,完成了resteasy-spring
的初始化流程。
上面讲解到的相关classes总结如下:
接下来看看resteasy提供的另一种spring集成加载方式。
对比ResteasySpringDispatcherServlet的启动流程
除了上面的基础是使用方法,resteasy-spring
还提供了ResteasySpringDispatcherServlet
用来启动容器,可以看看这种方法的启动过程,做为比较和参考。
下面是使用ResteasySpringDispatcherServlet
的一个基础配置:
可以看到没有使用到ResteasyBootstrap
和SpringContextLoaderListener
做为Listener
配置进去,而是使用了一个resteasy-spring-mvc-servlet.xml
的配置文件。看下这个文件的内容:
这个配置文件的核心是它包含的这个springmvc-resteasy.xml
这个配置文件。这个文件是resteasy-spring
模块自己提供的,看下它的内容:
如上所示,这个配置文件分为两大块,一块是Resteasy setup
,还有一块是Resteasy Spring MVC setup
。我们不管Resteasy Spring MVC setup
这部分,就看基础部分,从上面的截图可以看到,其实它的核心也是设置ResteasyDeployment
和SpringBeanProcessor
。
以上是对resteasy-spring
提供的两种加载方法的分析。