SpringMvc重复加载的问题
SpringMvc ioc bean重复加载的问题探讨—
contextloaderListener会在spring启动的时候加载,会初始化一个web应用的上下文,加载定义的spring-contxt.xml,这个xml可以存放所有的bean信息。
但是再dispatchservlet初始化的时候,dispatchServlet也会去加载spring-mvc.xml,这个xml存放的是handlemapping的映射信息,即controller扫描。
所以之前会疑问为什么contextloaderListener加载了handlemapping信息,dispatchservlet还要再去初始化一次,因为dispatchservlet仅仅只将controller相关bean加载进ioc容器,如果整个项目没有其他bean则contextloaderListener可有可无。
ContextLoaderListener和DispatcherServlet个各创建一个WebApplicationContext;
ContextLoaderListener默认加载context-param为contextConfigLocation中的配置文件信息,它是DispatcherServlet创建容器的父容器。 为了防止交叉定义bean,可以用两个xml区别开来:
ContextLoaderListener:spring-context.cml中配置所有非MVC组件:Service,dao…
DispatcherServlet :spring-mvc.xml中配置所有MVC相关组件 Controller,Handler,Resovler…