Spring源码解析之一:IOC原理概览

本文深入探讨Spring的两大核心模块——IOC(控制反转)和AOP(面向切面编程)。IOC通过依赖注入管理Bean对象,利用BeanFactory进行实例化并存储在IOC容器中,BeanDefinition则封装了Bean的定义信息。Spring支持通过注解和XML配置文件声明Bean,BeanFactoryPostProcessor允许在实例化前预处理BeanDefinition。文章详细阐述了Spring如何实例化Bean的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Spring两大核心模块:IOC与AOP。

IOC即控制反转,其基本原理或者核心场景就是依赖注入。Spring实现依赖注入的前提肯定是Spring里面管理了所有自动注入的实例Bean对象,也即是Spring自动将所有需要的对象都实例化了,并放置在某个地方。当Spring遇到需要自动注入或者其他需要使用对象的场景时,就从它放置对象的地方取出来即可。

Spring放置这些实例化Bean对象的地方就是我们常说的IOC容器,其本质就是一个map。

在开发应用程序时,有多种方式告诉Spring需要为我们管理哪些对象。比如,在一个类上添加注解@Component,Spring就会自动为这个类生成一个对象并放在IOC容器中。另外一种方式就是配置文件。例如在一个xml配置文件中,我们可以声明多个对象,Spring启动时读取配置文件,从配置文件中,Spring就能够知道需要将实例化哪些对象,并获取到对象实例化时所需要的完整信息。

也就是说,无论是各种格式的配置文件,还是注解声明的方式,只要里面包含了足够的Bean的定义信息,Spring只要获取到这些Bean的定义信息,就能够完成Bean的实例化工作。由于Bean的定义信息是可能存在在多种信息源的,因此,Spring定义了一个统一的接口,BeanDefinitionReader,这个接口定义了读取配置文件的统一的规范。通过这个接口,Spring就可以将各种格式的Bean的定义信息读取到内存中,并存放到一个叫BeanDefinition的地方。

获取到了BeanDefinition之后,Spring就可以通过反射机制将所有的Bean进行实例化,并将其放置到IOC容器中,已备后序使用。

真正调用反射机制实例化Bean的地方叫作Beanfactory。Spring在读取完BeanDefinition到BeanFactory实例化Bean之前,可以通过BeanFactoryPostProcessor对BeadDefinition信息进行一个预处理。

Bean的实例化的详细过程未完待续。。。

参考链接:

【马士兵教育】Spring全家桶最新教程IDEA版通俗易懂---快速掌握Spring源码/SpringBoot/SringCloud/SpringMVC底层原理_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值