DispatcherServlet与ContextLoaderListener的对比

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sadfishsc/article/details/51027873

1. 从DispatcherServlet和ContextLoaderListener的初始化过程可以看出,二者分别会生成一个WebApplicationContext,且以不同的attrName注册到web容器中

2. 根据web.xml的加载顺序,listener总是先于servlet进行加载,因此虽然DispatcherServlet和ContextLoaderListener的WebApplicationContext不同,但是ContextLoaderListener的WebApplicationContext总是DispatcherServlet的父ApplicationContext

3. 同一个web容器中,只允许存在一个ContextLoaderListener,但可以存在多个DispatcherServlet

4. 由于二者生成的WebApplicationContext不同,因而这两个WebApplicationContext会分别去加载它们的配置,生成不同的BeanFactory;获取Spring Bean时,会先从DispatcherServlet的WebApplicationContext中查找,若不存在再通过父ApplicationContext,即ContextLoaderListener的WebApplicationContext,进行查找

5. 若二者的配置文件对Bean的定义存在交叉(即二者的配置文件中都定义了相同class且相同beanName的bean),则两个WebApplicationContext中都会保存一份该bean,但实际调用中只会用到DispatcherServlet中的bean,ContextLoaderListener中的bean无法调用到,成为内存泄漏

6. DispatcherServlet除了与ContextLoaderListener一样,会加载用户配置的bean以外,还会自动加载与web mvc相关的spring bean,如RequestMapping、ViewResolver、ExceptionHandler等

ContextLoaderListenerDispatcherServlet有神马关系?

12-21

这俩货好像都要Spring的Bean配置文件,rn可以这俩货使用相同的配置文件么?rn求知道:)rnrn其实,我想问的是这俩货有神马区别?[img=http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/27.gif][/img]rnrnrn[code=java]rn信息: Root WebApplicationContext: initialization startedrn2012-12-21 19:56:08 org.springframework.context.support.AbstractApplicationContext prepareRefreshrn信息: Refreshing Root WebApplicationContext: startup date [Fri Dec 21 19:56:08 CST 2012]; root of context hierarchyrn2012-12-21 19:56:09 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitionsrn信息: Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml]rn2012-12-21 19:56:09 org.springframework.web.context.ContextLoader initWebApplicationContextrn严重: Context initialization failedrnorg.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]rn at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)rn at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)rn at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)rn at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)rn at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)rn at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)rn at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)rn at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)rn at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)rn at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)rn at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282)rn at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204)rn at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)rn[/code]

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭