BeanFacotry体系结构

Spring Ioc 容器设计可以分为两个路线, 一个是以 BeanFactory 为主的简单容器, 另一个是以 ApplicationContext 为主的高级容器, 高级容器增加了许多面向实际的功能, 让原本在 BeanFacotory 当中实现编码的功能使用配置就可以完成。

image-20220102135848371

BeanFactory 常用方法

image-20220102140338054

ListableBeanFactory

该接口可以以列表的形式提供 Bean 的相关信息, 可以批量的列出工厂生产实例的信息, 可以获取所有 Bean 的名称集合, BeanDifinition 注册的总数。

image-20220102140546253

HierarchicalBeanFactory

image-20220102140708215

  • 第一个方法返回本 Bean 工厂的父工厂。这个方法实现了工厂的分层。
  • 第二个方法判断本地工厂是否包含这个 Bean(忽略其他所有父工厂)。这也是分层思想的体现。

这个工厂接口非常简单,实现了 Bean 工厂的分层。这个工厂接口也是继承自 BeanFacotory,也是一个二级接口,相对于父接口,它只扩展了一个重要的功能(工厂分层)。

AutowireCapableBeanFactory

自动装配的 Bean 工厂

  • 组件扫描:自动发现应用容器中需要创建的 Bean, 在指定范围内找出被 @Controller, @Service 这些注解标签标记的 Bean。
  • 自动装配:自动满足 Bean 之间的依赖,指的就是 Spring 的依赖注入功能, 对被 @Autowired 标记的标签进行自动注入。

这个工厂接口继承自 BeanFacotory,它扩展了自动装配的功能,根据类定义 BeanDefinition 装配 Bean、执行前、后处理器等。

image-20220102142120903

ConfigurableBeanFactory

ConfigurableBeanFactory 同时继承了 HierarchicalBeanFactorySingletonBeanRegistry 这两个接口,即同时继承了分层和单例类注册的功能。并额外独有 30 多个方法, 这 30 个方法包含了工厂创建、注册一个 Bean 的众多细节。

image-20220102142246658

ConfigurableListableBeanFactory

集大成的接口, 它整合了 BeanFactory 体系的所有二级接口, 扩展之后,加上自有的这 8 个方法。

image-20220102142412978

DefaultListableBeanFactory

它是真正第一个可以独立运行的 IoC 容器, 它实现了 ConfigurableListableBeanFactory, 以及 BeanDefinition 接口,其中 BeanDefinitionMap 成员变量, 该成员变量是存储容器当中所有注册过了的 BeanDefinition 实例的载体。

image-20220102142516553

posted @   BNTang  阅读(45)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
历史上的今天:
2021-01-02 C
点击右上角即可分享
微信分享提示