欢迎访问宙启技术站
智能推送

Spring和SpringMVC父子容器关系初窥(小结)

发布时间:2023-05-15 01:34:09

Spring和SpringMVC是两个非常流行的开源Java框架,它们分别负责应用程序的业务逻辑和Web层。在使用SpringMVC时,我们通常需要在应用程序的上下文中集成Spring框架,使Spring和SpringMVC能够协同工作。

在Spring和SpringMVC之间的集成中,父子容器的概念非常重要。Spring和SpringMVC在应用程序的运行过程中,会各自创建一个IoC容器。SpringMVC的IoC容器是Spring的IoC容器的子容器。父子容器之间的关系如下图所示:

![image](https://user-images.githubusercontent.com/68188848/127685389-875845dc-600c-4a8b-85da-3ec2f8011e36.png)

下面我们来分别了解一下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容器的子容器。父子容器之间的关系如下图所示:

![image](https://user-images.githubusercontent.com/68188848/127685441-0cf0f42f-dc7d-4615-817a-5e787abc97cc.png)

在这样的父子容器关系中,子容器可以访问父容器中的所有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。这样的设计使得应用程序的结构更加清晰,避免了不必要的耦合和复杂性。