自己做的话如何做spring
1.架构图
ioc
aop ===> 容器(从对象的创建和销毁进行管理)
bean beanDefinition(接口)
BeanDefinitionReader 作用
定义规范 如果扩展可以扩展 这是一个接口可以更改实现类
BeanDefintion Bean 的定义信息 读取到了xml所有属性 准备去通过反射去实例化 但是不能直接反射 考虑扩展性
在beanDefinition创建需要改变bean的个性化修改怎么办 比如@value怎么做 因为定义信息在BeanDefintion 里面 数据也在这里
BeanFactoryPostProcessor (bean工厂后置处理器
抽象自动代理创建者自定义BeanFactoryPostProcessor 交给spring管理之后就能调用获取bean 对象时会调用
aplicationContext 设置 Aware 忽略
代理详情
Bean的创建流程
prepareRefresh 准备刷新 记录时间 记录日志
env 获取环境对象验证属性资源
存储预刷新的监听器(观察者模式)
2.刷新beanfactory 获得beanFactory
如果有工厂销毁 关闭 创建一个新工厂创建一个defaultListable bean工厂
beanfactory的初始化操作 设 置 属性值设置忽略aware
factory后置增强
循环beanFactoryPostProcessor