通常情况下会有这么几个配置文件:web.xml, applicationContext.xml, xxxx-servlet.xml,
在web.xml中通常会这么配置DispatcherServlet:
这个servlet默认会以<servlet-name>-servlet.xml为当前servlet的spring容器的配置文件,比如本例应该是mvc-servlet.xml,但是如果你不想这么命名,则要给这个servlet添加启动参数contextConfigLocation, 像上面被注释掉的一样。
web.xml中通常还有这样的配置:
context-param是global参数,会被整个应用程序共享;spring mvc中配置的ContextLoaderListener正是通过读取contextConfigLocation这个全局参数,找到全局的spring容器配置文件。然后构建全局的WebApplicationContext,具体的过程由ContextLoader来操作,ContextLoader中initWebApplicationContext方法非常清晰地描述了这个过程. 这个全局的WebApplicationContext可以被所有的DispatcherServlet的spring容器访问,因为所有DispatcherServlet的spring容器都把这个全局的容器作为parent.这个过程描述在FrameworkServlet中; 不清楚的可以看一下源码。这样的父子容器的设计非常有好处:
业务层, 持久层的bean放在父容器中, 这样可以被所有展现层共享;配置文件也可以拆分得更清晰:XXXDao.xml, XXXService.xml .....
展现层的bean放在各自servlet的spring容器中。
读了好多次代码,才总算把这个问题搞清楚了。
spring学习笔记:spring mvc不得不说的几处配置
最新推荐文章于 2021-01-14 12:07:48 发布