- 类比
- IOC<控制反转>
- spring的极简流程
- 学校需要新建人员信息库保存信息
- 学校的人员将个人信息交给学校管理局
- 学校管理局提供信息方式一:xml文件
- 学校管理局提供信息方式二:注解
- 未来教育局提供的第三种规范:谁知道呢
- 学校将学校管理局提供信息添加到学校人员信息中
- 学校开学,学校校车出动接学生上学
- bean实例化流程
- 反射完成实例化<极简版本>
- 收尾
为了了解spring流程,需要接受、了解、熟悉很多未知的定义,在此使用 学校 作为辅助,帮助我们了解spring。
<此版本中只有学校和学生,其他内容后续添加>
学校开学了,学生需要自己上学。如果学生第一天上学不认路走丢了,没有到学校。
学校表示:这跟我没关系,不是我的责任;
家长说:不行,这就是学校的责任。
学校管理局
学校决定:自己出动校车,开学时把所有学生通过校车接到学校,教学生认路。
这就是控制反转:spring 通过反射/其他方式完成对象的实例化。
spring 创建 BeanFactory
AbstractApplicationContext 类中的 obtainFreshBeanFactory 方法, 返回 DefaultListableBeanFactory<学校人员信息库>学校的人员将个人信息交给学校管理局
学校管理局制定信息规范,要求:
学生家长、老师按照规范提供信息;
学校按照规范自定义规范解析方法<将信息解析为人员信息BeanDefinition,保存到人员信息库DefaultListableBeanFactory>
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,有不足之处,可以多多交流。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)