Spring流程

100 阅读1分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第9天,点击查看活动详情。​ ​

spring是什么?

是个框架,是个容器,是个生态

为什么要用spring?

简化了开发难度,不需要创建对象,只需要在使用时拿出来即可,spring负责了创建bean对象

最开始的注入bean对象是通过xml文件进行bean对象的注入,现在更方便的是使用注解,而容器必须识别bean信息才能进行创建,所以不管是xml文件还是@controller注解都是用来定义bean的信息

在启动的时候会加载跟解析xml文件跟注解类,加载和解析完成后会把bean对象放到容器里的一个对象里面叫BeanDefinition,它包含了很多bean的定义信息

 而xml怎么变成BeanDefinition

 xml本质上就是一个特殊格式的文件,通过io流获取后通过document解析,循环获取document的父子节点数据set到具体配置的属性中。

但是不同格式的文件有不同格式的解析方式,spring不能出现一种格式写一种解析方式,所以需要一个规范

而BeanDefinitionReader类就是提供了一个可以随意重写解析的方法

在上面我们得到了BeanDefinition对象,但是它不是bean对象,我们不能直接使用,但是它都有了bean的定义信息所以我们可以直接创建对应的bean对象就好了

如果对bean的方法里的value是需要替换的就需要进行扩展处理

 postProcesson就是各项扩展点,像上面处理占位符修改bean内容定义的就可以通过下面的BeanFactoryPostProcesson接口的PlaceholderConfigureSupport实现类进行占位符解析替换

 而BeanFactoryPostProcessor也是作用在BeanDefinition上进行修改的

 可以通过postProcessor个性化设置bean处理逻辑

 bean对象是什么时候被调用的

 创建对象有几个步骤

 bean的生命周期

 1. 实例化

  1. 初始化

beanFactory跟Factorybean的区别 


接口跟抽象类的区别

源码里面是怎么实现的扩展

BeanFactory的理解

BeanFactory是进行整个容器的访问的

反射获取对象

AOP跟IOC的关系

源码方法论