【发布时间】:2013-09-05 20:28:57
【问题描述】:
在典型的 Spring MVC 项目中,有两个“容器”:一个由 ContextLoaderListener 创建,另一个由 DispatchServlet 创建。
我想知道,这真的是两个IoC容器实例吗?(我看到两个bean配置文件,一个是root-context.xml另一个是servlet-context.xml)
如果有2个容器,那是什么关系?
在一个容器中声明的 bean 可以在另一个容器中使用吗?
【问题讨论】:
-
它们不会创建两个不同的容器实例,而是创建两个不同的应用程序上下文。
-
时隔多年,读到了spring源码。现在,我可以说:1)是的,有两个 ApplicationContext 实例(每个实例将包含一个 beanFactory 的实例) 2)mvc 层的实例是子实例并保留父实例的引用。 3)父实例中的bean可以被子使用,但是子实例中的bean不能被父使用。
标签: spring spring-mvc dependency-injection inversion-of-control