spring流程版本一<极简版本>

类比

为了了解spring流程,需要接受、了解、熟悉很多未知的定义,在此使用 学校 作为辅助,帮助我们了解spring。
<此版本中只有学校和学生,其他内容后续添加>

学校spring
学校管理局开发人员
学校信息ApplicationContext
学校人员信息库DefaultListableBeanFactory
人员bean
人员信息BeanDefinition

IOC<控制反转>

学校开学了,学生需要自己上学。如果学生第一天上学不认路走丢了,没有到学校。
学校表示:这跟我没关系,不是我的责任;
家长说:不行,这就是学校的责任。
学校管理局<spring开发人员>说:这就是学校的责任,学校想办法解决。

学校决定:自己出动校车,开学时把所有学生通过校车接到学校,教学生认路。
这就是控制反转:spring 通过反射/其他方式完成对象的实例化。

spring的极简流程

学校需要新建人员信息库保存信息

spring 创建 BeanFactory

AbstractApplicationContext 类中的 obtainFreshBeanFactory 方法,
返回 DefaultListableBeanFactory<学校人员信息库>

学校的人员将个人信息交给学校管理局

学校管理局制定信息规范,要求:
学生家长、老师按照规范提供信息;
学校按照规范自定义规范解析方法<将信息解析为人员信息BeanDefinition,保存到人员信息库DefaultListableBeanFactory>

学校管理局提供信息1.0:xml文件

19世纪教育局<开发人员>定义了xml信息规范。

学生家长、老师提供人员信息规范:
xml文件标签 <bean>

学校自定义xml信息规范解析工具:
xml文件解析器:XmlBeanDefinitionReader

学校管理局提供信息2.0:注解

20世纪教育局<开发人员>定义了注解规范。

学生家长、老师提供人员信息规范:
注解: @Bean、@Component

学校自定义xml信息规范解析工具:
注解解析器:ConfigurationClassParser中扫描@ComponentScan时,会将有@Component注解类,生成BeanDefinition对象

未来教育局提供3.0信息规范:谁知道呢

学校将学校管理局提供信息添加到学校人员信息中

DefaultListableBeanFactory的
beanDefinitionNames   学生名字
beanDefinitionMap     key:学生名字;value:学生信息

学校开学,学校校车出动接学生上学

spring启动

spring实例化过程
根据DefaultListableBeanFactory的
beanDefinitionNames和beanDefinitionMap
完成bean的实例化

调用getBean、doGetBean、createBean、doCreateBean完成bean的实例化
其中使用反射方法创建bean时,遵循bean的实例化流程

bean实例化流程

反射完成实例化<极简版本>

1、调用构造方法完成实例化

doCreateBean方法中的createBeanInstance完成bean的实例化

2、调用set方法完成属性注入

doCreateBean方法中的populateBean完成bean的属性注入

3、调用init方法完成初始化

doCreateBean方法中的initializeBean完成bean的初始化

收尾

臭弟弟在 马士兵教学中,看完了连鹏举老师的spring视频,自我总结极简版本spring,有不足之处,可以多多交流。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值