关闭

springMvc中WebApplicationContext的继承关系

标签: 继承springspring mvc上下文内容孙琛斌
948人阅读 评论(0) 收藏 举报
分类:

最近在做一个功能的时候遇到了个问题,有点不能理解,具体问题是这样的,有一个bean,id为platform,我明明在xml文件里面注册了,并且也已经检查了这个xml在启动的时候已经被扫到了spring容器里。

而且在controller等地方都可以注入进来。

偏偏在manager里注不进来,有点犯嘀咕,难道是放在两个不同的容器里?但是controller可以正常注入manager中的对象啊。

后来看了下web.xml的配置文件,如下:

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:core/applicationContext.xml</param-value>
  </context-param>
  <listener>
    <description>spring</description>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:core/spring-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

这两个配置,研究了下,使用listener注册的applicationContext.xml与使用servlet注册的spring-servlet.xml是父与子的关系。

也就是说applicationContext.xml中的bean可以注入到spring-servlet.xml中,但是反之spring-servlet.xml中的bean无法注入到applicationContext.xml中。

也就是说父亲的东西集成给了儿子,儿子可以用,而儿子的东西父亲不能用,就是这个道理了。

了解了这个之后,回去检查配置文件,就发现controller的扫描配置和id为platform的bean是写在spring-servlet.xml中的,而manager的扫描配置是写在applicationContext.xml中的。

那么如果我想在controller和manager中都使用这个id为platform的bean怎么办呢?

解决方案就是把id为platform的bean配置到applicationContext.xml中,这样父和子都可以使用了。

有人会问为什么不把controller和manager的扫描都写到spring-servlet.xml中,当然可以,但是我的项目不是很简单的架子,这个controller和manager是分离的,所以扫描注解的时候不是写在一起的,只能说需求不一样。

以上只是举了个简单的例子,可能有漏洞,但基本概念肯定是对的。

1
0
查看评论

Spring.net与Asp.net Mvc结合示例

一、闲话   因为项目要用到Ioc框架,所以要为Ioc框架选型,优秀的Ioc框架好几款,例如:sping.net,castle,unity……当然还不止三款,还有其它的Ioc框架,castle跟unity使用上比较相近,spring.net跟前两者使用上差异较大些。资料、文档和博文方面spri...
  • educast
  • educast
  • 2012-06-26 10:13
  • 11545

【兄弟连 】Spring Mvc3 和 C# MVC3

由于工作原因一直在接触java和C#的web开发,用到框架中比较典型的就算是Spring Mvc3和MVC3 下面个人用代码段的方式对比一下两个框架的同异。以下:S代表springmvc3 C代表C# MVC3 1、配置文件: C: Global.asax【路由配置】 Web.config【web配...
  • upxiaofeng
  • upxiaofeng
  • 2015-04-29 15:35
  • 1125

springmvc执行流程以及对spring应用上下文webApplicationContext理解

Spring MVC DispatcherServlet 读取 xml 配置文件的原则: {servlet-name} ==> /WEB-INF/{servlet-name}-servlet.xml 如果你不想用 SpringMVC 的使用原则,可以重新配置 SpringMVC ...
  • Victor_Cindy1
  • Victor_Cindy1
  • 2016-08-15 13:58
  • 852

SpringMVC中的DispatcherServlet (及WebApplicationContext部分)

Spring中的DispatcherServlet除了作为处理request的前端控制器,还负责与Spring IOC容器整合并提供Spring的功能。 DispatcherServlet的工作流程 Sping MVC中的Context hierarchy 在Spring MVC中...
  • limm33
  • limm33
  • 2016-03-31 11:55
  • 820

Spring MVC模式下,获取WebApplicationContext的工具类 方法

在已有的注解类型下,获取WebApplicationContext的工具类 通过  WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContextEvent sce);可以获得spring的单...
  • wuqilianga
  • wuqilianga
  • 2017-03-08 18:13
  • 849

No WebApplicationContext found: no ContextLoaderListener registered的解决方法

 查了很多资料,有不同的说法,我总算是解决了说法1:spring中提供 ContextLoaderListenter类,用来加载context的xml文件。 spring为struts提供ContextLoaderPlugIn类,此类也可以加载context的xml文件。 区别在于,两种方...
  • logonin
  • logonin
  • 2008-07-31 09:23
  • 14395

Spring 过滤器DelegatingFilterProxy No WebApplicationContext found: no ContextLoaderListener registered?

先说明一下,如果使用Spring 过滤器org.springframework.web.filter.DelegatingFilterProxy的时候出现错误“No WebApplicationContext found: no ContextLoaderListener registered?”的...
  • zuoyexingchennn
  • zuoyexingchennn
  • 2015-12-29 15:08
  • 4651

【Java.Spring.MVC】DispatcherServlet (及WebApplicationContext部分)

Spring MVC的核心是DispatchServlet,这个Servlet充当Spring MVC 的前端控制器。 DispatchServlet同时整合了Spring IoC容器。 一个web.xml可以配置多个DispatchServlet,通过其的配置,让每一个DispatchServ...
  • robinjwong
  • robinjwong
  • 2014-12-11 01:18
  • 1606

Spring中DispacherServlet、WebApplicationContext、ServletContext的关系

解释一:     要想很好理解这三个上下文的关系,需要先熟悉spring是怎样在web容器中启动起来的。spring的启动过程其实就是其IoC容器的启动过程,对于web程序,IoC容器启动过程即是建立上下文的过程。 spring的启动过程: 首先,对于一个web应用,其部...
  • yu412346928
  • yu412346928
  • 2014-03-17 16:58
  • 667

Spring WebApplicationContext的两种初始化方式

Spring提供了两种方式用于初始化WebApplicationContext,ServletContext监听器、自启动Servlet。其中只有Servlet2.3以上版本的Web容器才支持ServletContext监听器方式初始化WebApplicationContext。 一、监听器方式(...
  • dhmpgt
  • dhmpgt
  • 2013-09-16 16:25
  • 10920
    个人资料
    • 访问:311718次
    • 积分:4128
    • 等级:
    • 排名:第8883名
    • 原创:92篇
    • 转载:36篇
    • 译文:0篇
    • 评论:104条
    博客专栏
    技术交流群
    JAVA技术交流群:75451341

    JAVA技术交流群

    最新评论