深入理解applicationContext.xml和dispatcherServlet-servlet.xml区别

使用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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值