在典型的Spring MVC项目中,有两个“容器”:一个由ContextLoaderListener创建,另一个由DispatchServlet创建。
我想知道,这真的是两个IoC容器实例吗?(我看到了两个bean配置文件,一个是root-context.xml
另一个servlet-context.xml
)
如果有2个容器,那是什么关系?
在一个容器中声明的豆类可以在另一个容器中使用吗?
从spring官方网站:
该接口org.springframework.context.ApplicationContext
代表Spring IoC容器,并负责实例化,配置和组装上述bean。容器通过读取配置元数据来获取有关要实例化,配置和组装哪些对象的指令。配置元数据以XML,Java批注或Java代码表示。
再次来自官方文档:
在Web MVC框架中,每个DispatcherServlet都有自己的WebApplicationContext,它继承了在根WebApplicationContext中已经定义的所有bean。这些继承的bean可以在servlet特定的作用域中被覆盖,并且你可以在给定Servlet实例本地定义新的特定于作用域的bean。
现在来到你的问题,因为据称在这里:
在Spring Web Applications中,有两种类型的容器,每种容器的配置和初始化方式都不同。一个是“应用程序上下文”,另一个是“ Web应用程序上下文”。首先让我们谈谈“应用程序上下文”。应用程序上下文是由web.xml中定义的ContextLoaderListener或ContextLoaderServlet初始化的容器,其配置如下所示:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:*-context.xml</param-value>
</context-param>
在上述配置中,我要求spring从类路径中加载与* -context.xml匹配的所有文件,并从中创建应用程序上下文。例如,此上下文可能包含组件,例如中间层事务服务,数据访问对象或你可能希望在整个应用程序中使用(和重用)的其他对象。每个应用程序将有一个应用程序上下文。
另一个上下文是“ WebApplicationContext”,它是应用程序上下文的子上下文。Spring Web应用程序中定义的每个DispatcherServlet将具有关联的WebApplicationContext。WebApplicationContext的初始化是这样的:
<servlet>
<servlet-name>platform-services</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:platform-services-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
你提供spring配置文件的名称作为servlet初始化参数。这里要记住的重要一点是XML的名称必须采用-servlet的形式。xml。在此示例中,该servlet的名称为platform-services,因此我们XML的名称必须为platform-service-servlet.xml。可以从每个WebApplicationContext引用ApplicationContext中可用的任何bean。最好的做法是,在业务逻辑组件和数据访问类(通常在ApplicationContext中定义)等中间层服务与控制器和视图解析器(在Web应用程序中定义)等与Web相关的组件之间保持清晰的区分。每个Dispatcher Servlet的WebApplicationContext)。
在典型的Spring MVC项目中,有两个“容器”:一个由ContextLoaderListener创建,另一个由DispatchServlet创建。 我想知道,这真的是两个IoC容器实例吗?(我看到两个bean配置文件,一个是,另一个是) 如果有2个容器,那么有什么关系? 在一个容器中声明的bean可以在另一个容器中使用吗?
问题内容: 我想知道人们对通过LINQ-to-SQL支持实体框架的决定有何想法?我有一个我最初使用LINQ-to- SQL开发的应用程序。我发现它是我们应用的理想解决方案。 在尝试移植到Entity Framework时,我感到很惊讶。恕我直言,甚至还没有准备好黄金时间。没有延迟加载,没有POCO,对继承的可怕依赖。我发现它在我的情况下基本上不可用,而是决定坚持使用LINQ- to-SQL,直到以
在Doug Lea的论文“A Java Fork/Join Framework”中: http://gee.cs.oswego.edu/dl/papers/fj.pdf 在2.1偷工中,他说: 当工作线程遇到连接操作时,它会处理其他任务(如果可用),直到注意到目标任务已完成(通过isDone)。否则,所有任务都将在不阻塞的情况下运行到完成。 那么有人能具体告诉我这些“其他任务”来自哪里吗?它们来自
这是我的spring.xml
本文向大家介绍详解关于Spring Cloud 框架热部署的方法,包括了详解关于Spring Cloud 框架热部署的方法的使用技巧和注意事项,需要的朋友参考一下 摘要: 所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。对于Java应用程序来说,热部署就是在运行时更新Java类文件。 1、在对应的pom.xml 文件中添加依赖 2、注:project 中添加 spring-bo
本文向大家介绍关于Java集合框架的总结,包括了关于Java集合框架的总结的使用技巧和注意事项,需要的朋友参考一下 本篇文章先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析。当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进行处理。从JDK1.5以后,这种状态得到了改进:可以使用泛型来限制集合里元素的类型,