使用applicationContext.xml文件时是需要在web.xml中添加listener的:??? org.springframework.web.context.ContextLoaderListener而这个一般是采用非spring mvc架构,如使用struts之类而又想引入spring才添加的,这个是用来加载Application Context。如果直接采用SpringMVC,只需要把所有相关配置放到xxx-servlet.xml中就OK了。applicationContext容器包含dispatcherServlet容器,当同时在这两个配置文件中配置<context:component-scan 标签进行扫描bean时,如果bean作用域配置为单例,那么分别在这两个容器中会生成两个不同的单例对象。
可见, applicationContext.xml 和 dispatch-servlet.xml形成了两个父子关系的上下文。 1) 一个bean如果在两个文件中都被定义了(比如两个文件中都定义了component scan扫描相同的package), spring会在application context和 servlet context中都生成一个实例,他们处于不同的上下文空间中,他们的行为方式是有可能不一样的。 2) 如果在application context和 servlet context中都存在同一个 @Service 的实例, controller(在servlet context中) 通过 @Resource引用时, 会优先选择servlet context中的实例。 不过最好的方法是:在applicationContext和dispatcher-servlet定义的bean最好不要重复, dispatcher-servlet最好只是定义controller类型的bean。
---------------------------------------------------------------------------------------------------------------------------------------- ApplicationContext.xml 是spring 全局配置文件,用来控制spring 特性的 dispatcher-servlet.xml 是spring mvc里面的,控制器、拦截uri转发view 使用applicationContext.xml文件时是需要在web.xml中添加listener的: org.springframework.web.context.ContextLoaderListener 翻译过来深入理解:
1.ApplicationContext.xml 是spring 全局配置文件,用来控制spring 特性的2.dispatcher-servlet.xml 是spring mvc里面的,控制器、拦截uri转发view3.一个bean如果在两个文件中都被定义了(比如两个文件中都定义了component scan扫描相同的package), spring会在application context和 servlet context中都生成一个实例,他们处于不同的上下文空间中,他们的行为方式是有可能不一样的。4.如果在application context和 servlet context中都存在同一个 @Service 的实例, controller(在servlet context中) 通过 @Resource引用时, 会优先选择servlet context中的实例。5.根据官网解释servlet context可以引用application context里的实例,反之不可以。6.多个servlet共享application context里的实例7.建议使用方法:servlet只扫描@controler;application扫描其它servlet.xml扫描配置
<context:component-scan base-package=“com.ssm.controller” use-default-filters=“false”><context:include-filter type="annotation"expression=“org.springframework.stereotype.Controller” /></context:component-scan>ApplicationContext.xml 扫描配置<context:component-scan base-package=“com.ssm” use-default-filters=“true”><context:exclude-filter type="annotation"expression=“org.springframework.stereotype.Controller” /></context:component-scan>
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交