聊聊最近撸Spring源码感悟

聊聊最近撸Spring源码感悟

一、前言

最近一段时间撸了Spring IOC、AOP、Transactional源码,这篇文章聊聊我写了哪些小玩意,这可能就是阅读源码以后最大收获。希望大家在里面能学习一些什么东西吧;

二、Spring IOC简单实现

第一步首先看一下配置文件,配置文件模拟Spring Bean注入时候的样子,少了XML验证头的一些东西;

img View Code

第二步是实体类;

img View Code

第三步也是最重要的一步,实现从配置中解析文件,然后通过反射创建Student对象,解析配置中Student的属性,赋值给Student对象完成初始化,最后加载到Map容器中;

img View Code

第四部测试调用;

img View Code

这简简单单的几步,其实已经反应出Bean的创建流程,首先来看一下我们通过BeanFactory怎么来获取一个对象,这里先不看ApplicationContext这个家伙不是一个纯粹的人;

img

如上图的标注,第一步主要是初始化配置文件信息,生成Resource,该过程也就是我写的读取文件的流程;

第二步主要是初始化BeanFactory,DefaultListableBeanFactory该类BeaFactory默认实现,这个也是Spring常用的手段,凡是复杂实现总要抽象一个多功能抽象类和一个默认实现,这样做的好处就在于我们只需要重写抽象类的方法就能实现新的一些扩展功能;

第三部分完成了Resource转化为Document,Document解析为BeanDefinition,最终加入到Map容器中过程,第二、三部就相当于我实现Spring IOC的loadBeans的方法前半部分,这个时候还不是真正可用的对象;

第四部分是最重要的部分,该部分完成BeanDefinition到实体Bean的创建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值