Spring和SpringMVC父子容器关系初窥(小结)
Spring和SpringMVC是两个非常流行的开源Java框架,它们分别负责应用程序的业务逻辑和Web层。在使用SpringMVC时,我们通常需要在应用程序的上下文中集成Spring框架,使Spring和SpringMVC能够协同工作。
在Spring和SpringMVC之间的集成中,父子容器的概念非常重要。Spring和SpringMVC在应用程序的运行过程中,会各自创建一个IoC容器。SpringMVC的IoC容器是Spring的IoC容器的子容器。父子容器之间的关系如下图所示:

下面我们来分别了解一下Spring和SpringMVC的IoC容器。
Spring IoC容器
Spring的IoC容器是Spring框架的核心,它负责创建、管理和维护Java对象的生命周期。在Spring中,所有的Java对象都由IoC容器统一管理,使各个组件之间的协作变得更加松散。
Spring的IoC容器包括两种类型:BeanFactory和ApplicationContext。其中,BeanFactory是Spring的最底层容器,主要负责对象的创建和维护;ApplicationContext则是在BeanFactory的基础上进一步提供了一些功能,如国际化支持、AOP等。
SpringMVC IoC容器
SpringMVC中的IoC容器是一个标准的Spring ApplicationContext。它由SpringMVC框架创建并管理,主要用于存储Web组件,如控制器、拦截器、视图解析器等。
SpringMVC中的IoC容器是Spring IoC容器的子容器,它可以访问Spring IoC容器中的所有Bean。因此,SpringMVC可以使用Spring IoC容器中的Bean,而不需要重新创建或初始化这些Bean。
父子容器之间的关系
SpringMVC的IoC容器是Spring IoC容器的子容器。父子容器之间的关系如下图所示:

在这样的父子容器关系中,子容器可以访问父容器中的所有Bean,而父容器无法访问子容器中的Bean。这样设计的好处是,SpringMVC可以使用Spring IoC容器中的所有Bean,而Spring IoC容器无法访问SpringMVC中的Bean。这样就避免了不必要的耦合和复杂性。
小结
Spring和SpringMVC都有自己的IoC容器,其中SpringMVC的IoC容器是Spring的IoC容器的子容器。父子容器之间的关系使得SpringMVC可以访问Spring IoC容器中的所有Bean,而Spring IoC容器无法访问SpringMVC中的Bean。这样的设计使得应用程序的结构更加清晰,避免了不必要的耦合和复杂性。
