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

spring流程版本一<极简版本>,第1张

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

spring流程
  • 类比
  • IOC<控制反转>
  • spring的极简流程
    • 学校需要新建人员信息库保存信息
    • 学校的人员将个人信息交给学校管理局
      • 学校管理局提供信息方式一:xml文件
      • 学校管理局提供信息方式二:注解
      • 未来教育局提供的第三种规范:谁知道呢
    • 学校将学校管理局提供信息添加到学校人员信息中
    • 学校开学,学校校车出动接学生上学
  • bean实例化流程
    • 反射完成实例化<极简版本>
  • 收尾

类比

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

学校spring学校管理局开发人员学校信息ApplicationContext学校人员信息库DefaultListableBeanFactory人员bean人员信息BeanDefinition IOC<控制反转>

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

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

spring的极简流程 学校需要新建人员信息库保存信息

spring 创建 BeanFactory

AbstractApplicationContext 类中的 obtainFreshBeanFactory 方法,
返回 DefaultListableBeanFactory<学校人员信息库>
学校的人员将个人信息交给学校管理局

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

学校管理局提供信息方式一:xml文件

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

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

学校自定义xml信息规范解析工具:
xml文件解析器:XmlBeanDefinitionReader
学校管理局提供信息方式二:注解

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

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

学校自定义xml信息规范解析工具:
注解解析器:ConfigurationClassParser中扫描@ComponentScan时,会将有@Component注解类,生成BeanDefinition对象
未来教育局提供的第三种规范:谁知道呢 学校将学校管理局提供信息添加到学校人员信息中
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,有不足之处,可以多多交流。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5637128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存