理解Spring IoC(一)

本文主要介绍了Spring框架中重要的IoC特性,即控制倒转,其实现依赖于依赖注入。通过实例说明Spring如何管理类的依赖,让开发者只需修改配置文件。还阐述了Spring涉及IoC的两个主要数据结构,以及Spring中Bean的完整生命周期。

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

毫无疑问,Spring是目前Java web的头号框架,而其最重要的特性就是IoC和AOP。

这里,我会用通俗的方式表达我对Spring IoC的理解


 

IoC 即 Inversion of Control,意为控制倒转。

它的实现需要DI,也就是依赖注入。

 

那么这个控制倒转到底是怎么倒转的呢?

其实就是让Spring控制。Spring说,你要什么类,都在我这里注册,我来向你提供管理,你可以自己制定一些管理的细节,要修改或者添加等等这些工作,通知我一下,让我来完成。

比如我们有A B C三个类,可能存在各种依赖,我们需要的时候就去跟Spring去注册,要修改的话,就告知Spring,而在运行的时候,Spring自然就会去把依赖修改掉。

我们不必因一个类的修改而改变大量的类的代码,我们要做的只是改变Spring的配置文件。

于是看起来,是Spring向我们需要操作的类下命令,而不是我们。这就是IoC。

 

可是,Spring具体是怎么搞定它的呢?为什么Spring能够完成找到Bean、创建Bean、配置Bean依赖等工作呢?

 

Spring涉及到IoC最主要的是两个数据结构:

一个是BeanDefinition,可以把它看成一个Map

另一个是BeanFactory等Spring IoC容器,暂且也当作Map好了

 

要想Spring框架对Bean的操作,就要先了解Spring中Bean的生命周期:

1、配置文件解析,IoC容器初始化

不管是BeanFactory,还是ApplicationContext的实现类,都是先解析我们的配置文件的(因为我们要通过修改配置文件的方式向Spring传达命令)

配置文件读取后,其中的内容会按照格式映射到BeanDefinition中,然后将字符串解析成类的信息,这时候读出来的信息就归属BeanDefinition管理了

BeanDefinition则会在解析后注册到Spring IoC容器中

2、Bean实例化

这一步就是通过getBean从IoC容器中获取Bean

getBean方法有许多重载函数,其实现比较复杂,也是IoC十分重要的一环

 3、检查Aware相关接口并配置依赖

4、BeanPostProcessor前置处理

5、检查是否是IntializingBean,决定是否调用afterPropertiesSet方法

6、检查是否自定义init-method

7、BeanPostProcessor后置处理

8、注册Destruction相关接口

9、使用

10、销毁

 

转载于:https://www.cnblogs.com/sh1296/p/10802366.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值