Spring基础

父子容器

Spring中的父子容器

定义——>容器之间有层次结构关系

规则:

1)每个容器有一个自己的父容器。
2)通过容器查找 bean 时:优先从子容器查找,如果找不到才会从父容器中查找

设计目的:

当应用中存在多个容器时,将公共的 bean 放到父容器中,如果父容器中的 bean 不适用,子容器还可以覆盖父容器中的 bean。

Spring中的应用

Spring 中的容器有两种,一种是常用的 ApplicationContext,另一种容器是最底层的 BeanFactory,ApplicationContext 就依托于底层的 BeanFactory 查找 Bean。

BeanFactory 最终的实现是 DefaultListableBeanFactory

容器初始化顺序

Spring 子容器依赖父容器,因此需要先对父容器初始化,然后才能对子容器初始化

SpringMVC中的父子容器

应用场景

1)前提
Spring MVC 负责控制整个请求流程的核心类是 DispatcherServlet,这个 DispatcherServlet 会关联一个 ApplicationContex。
当一个应用使用了不同的 DispatcherServlet 来处理请求,这就意味着一个应用中出现了多个 ApplicationContext。

2)问题:
可能导致多个容器中保存了多个相同类型的 bean。

3)解决思路:
将这些公共的服务注册到相同的父容器中,这样每个子容器都能使用到父容器中的公共 bean。

父子容器初始化顺序

Spring MVC 依托于 Servlet 规范。Servlet 规范中 ,所有的 Servlet 具有一个相同的上下文 ServletContext,ServletContext 将优先于 Servlet 初始化,Spring 利用了这个特性,在 ServletContext 初始化时创建父容器,并将其绑定到 ServletContext 的属性中,然后在每个 DispatcherServlet 初始过程中创建子容器并将 ServletContext 中的容器设置为父容器。

参考

1)https://blog.csdn.net/zzuhkp/article/details/121071737

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值