以下均为本人初次理解观点,才疏,接受指正及补充
本次创作将会对以下问题进行阐述
(一)、什么是Spring的父子容器
(二)、Spring父子容器有什么作用
(三)、Spring父子容器的特点
(四)、如何创建父子容器
(五)、如何取消父子容器
一、什么是父子容器
Spring的父子容器是一个特殊的容器,它允许你将一个容器(子容器)放入另外一个容器(父容器)中,这种结构可以帮助我们管理配置,提高项目的灵活性。这种特殊的关系,就是Java中的继承关系,子容器可以继承父容器的配置,同时也可以有自己的配置,这种机制提高了代码的维护性和可重用性。
二、Spring父子容器的作用
通常我们再使用SpringMVC框架的时候,采用的是三层架构,即Controller,Service,Dao层;父容器中会包含Dao层和Service层,而子容器中会包含Controller层,这两个容器组成了父子容器的关系,controller通常会注入service层的bean。
父子容器的采用可以防止有人再Service层去调用Controller层的bean,导致整个依赖层次混乱
父容器和子容器的需求也不一样,正如前面讲的父容器中包含的是Service层和Dao层,所以会注入一些关于事务的支持组件,而子容器则不会用上这些东西,需要的反而是SpringMVC相关的一些Bean,而这些Bean父容器中也是不会使用的,将这些互不相关的东西隔离开,可以有效避免一些没必要的错误,从而提高容器的加载速度。
三、Spring父子容器的特点
1.父容器和子容器是相互隔离的,内部可以存在同名的Bean。
2.子容器可以访问父容器的Bean,反之不能。
3.调用子容器的getBean方法获取Bean的时候,会沿着当前容器的上级容器进行查询,直到找到对应的Bean为之。
4.子容器中可以通过任何注入方式注入父容器中的Bean,而父容器无法注入子容器的Bean。
四、如何创建父子容器
在XML的配置方式中父容器可以通过Listener监听器创建,子容器可以通过DispatchServlet创建。
五、如何取消父子容器
在XML的配置方式中不编写Listener监听器创建Spring的IOC容器,在配置的时候通过Import标签导入Spring的配置文件,这样就不会产生父子容器。