深入解析Spring框架的核心:BeanFactory体系结构探究

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 深入解析Spring框架的核心:BeanFactory体系结构探究

前言


我滴妈!人事竟然问我Spring BeanDefinition是如何帮我们解析和加载的?


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






BeanFactory 常用方法





ListableBeanFactory



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




HierarchicalBeanFactory


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

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




AutowireCapableBeanFactory


自动装配的 Bean 工厂

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



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





ConfigurableBeanFactory


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





ConfigurableListableBeanFactory


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




DefaultListableBeanFactory


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





最后


本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

相关文章
|
10天前
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
28 3
|
17天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
75 3
|
5天前
|
搜索推荐 Java Spring
Spring Filter深度解析
【10月更文挑战第21天】Spring Filter 是 Spring 框架中非常重要的一部分,它为请求处理提供了灵活的控制和扩展机制。通过合理配置和使用 Filter,可以实现各种个性化的功能,提升应用的安全性、可靠性和性能。还可以结合具体的代码示例和实际应用案例,进一步深入探讨 Spring Filter 的具体应用和优化技巧,使对它的理解更加全面和深入。
|
19天前
|
Java Spring
Spring底层架构源码解析(三)
Spring底层架构源码解析(三)
|
14天前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
43 0
|
14天前
|
分布式计算 Java 应用服务中间件
NettyIO框架的深度技术解析与实战
【10月更文挑战第13天】Netty是一个异步事件驱动的网络应用程序框架,由JBOSS提供,现已成为Github上的独立项目。
29 0
|
19天前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
39 0
|
19天前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
29 0
|
19天前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
34 0
|
19天前
|
安全 Java 程序员
Collection-Stack&Queue源码解析
Collection-Stack&Queue源码解析
45 0

推荐镜像

更多