resteasy+spring+undertow(二)
理解resteasy-spring-with-tjws
的设计,用来做undertow
的实现。似乎只有一处不同,就是设置了applicationContext
:
查看一下springmvc-example
项目:
找到了配置方法:
这个配置include了默认的springmvc-servlet.xml
和component-scan
的相关信息:
所以说应该怎样通过代码把component-scan
设置好呢?想一下。
于是看了下这篇文档:
看到了相关方法:
接下来就是想想怎么把上面的配置通过代码注入到undertow里面。
于是找到spring-undertow
这个项目:
- https://github.com/yarosla/spring-undertow
这个项目里面有把spring注入undertow的方法。可以看到它有标记为@ComponentScan
的class:
可以看到上面的class除了@ComponentScan
,还可以用来注入配置文件app.properties
。找到使用位置:
可以看到是createSpringWebAppContext(...)
方法调用并加载位于ys.rest.config
里面的Config
。
所以需要查看createSpringWebAppContext(...)
方法的实现:
所以Config
被封装进入了AnnotationConfigWebApplicationContext
。这个context最终被Undertow的DeploymentInfo
所使用:
因为我不需要ContextLoaderListener
,所以只需要看createDispatcherServlet(...)
方法(关于ContextLoaderListener
,查看ContextLoaderListener vs DispatcherServlet - HowToDoInJava):
通过上面的分析,理清了undertow里面注入spring的方法。