如何编写一个IOC容器,Spring IOC容器的内在逻辑是什么

本文探讨了IOC容器的构建思路,从工厂方法和配置文件开始,逐步引入解决循环依赖、增强器和初始化步骤的概念。强调了在设计过程中如何使用代理模式和接口来解耦,并讨论了实例化与初始化的区别。通过这些思考,帮助读者理解Spring等IOC容器的设计原理和模式。
摘要由CSDN通过智能技术生成

思考

如果让你手写一个IOC容器你要怎么写呢?你的思路是什么?都要考虑哪些问题?都要使用哪种设计模式?

IOC容器的晋升之路

当我们想要做一个IOC容器来盛放生成的对象时,我们的初步想法是通过工厂方法+配置文件来实现建议的IOC容器。
在这里插入图片描述
但当出现循环依赖的时候,我们发现上面的简单IOC容器不能满足需求,思考我们是否可以将对象的创建过程,即实例化与初始化拆开。(本文主要是对IOC容器的讲解,代理对象及循环依赖的三级缓存暂时先不进行深入研究)
在这里插入图片描述

思考:多个配置文件与BeanDefinition直接关联,耦合性较高,如何解耦呢?
没有什么是中间加一层解决不了的问题,此处我们添加一个接口。
在这里插入图片描述
思考:如果我想要对类进行动态的修改怎么办?
这里可以想到我们常用的设计模式:代理模式的思想,添加一个增强器。
在这里插入图片描述
思考:我们是否可以在创建对象前后也添加一些增强器来动态的修改我们要创建的Bean对象呢?
此处细化初始化步骤。
在这里插入图片描述
思考:实例化与初始化的区别是什么呢?
实例化是在内存开辟一个空间并设置默认值。初始化是对属性赋实际值。

经过以上的思考,我们就可以从宏观的层面理解Spring是如何编写IOC容器的,当然,Spring中的IOC考虑的面还有很多。
小编在这里从宏观的角度进行了简单的梳理,更多的是希望大家在看Spring源码的时候,不要只纠结于他们是如何实现的,我们还可以从源码中抽离出来,站在更高层面上思考,Spring为什么要这么设计,里面的逻辑是什么,思考是什么,又是通过哪些设计模式,设计原则达到的可拓展,可复用,可维护的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elsa~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值