从总体到区域
总
控制反转:理论思想,原来的物件是由使用者来进行控制,有了spring之后,可以把整个物件交给spring来帮我们进行管理
DI(依赖注入):把对应的属性的值注入到具体的物件中,@Autowired,populateBean完成属性值的注入
容器:存盘物件,使用map结构来存盘,在spring中一般存在三级快取,singletonObjects存放完整的bean物件,整个bean的生命周期,从创建到使用到销毁的程序全部都是由容器来管理(bean的生命周期)
局 (可结合之前的笔记中spring中容器和物件的创建流程图理解)
1、一般聊ioc容器的时候要涉及到容器的创建程序(beanFactory,DefaultListableBeanFactory),向bean工厂中设定一些自变量(BeanPostProcessor,Aware界面的子类)等等属性
2、加载决议bean物件,准备要创建的bean物件的定义物件beanDefinition,(xml或者注解的决议程序)
3、beanFactoryPostProcessor的处理,此处是扩展点,PlaceHolderConfigurSupport,ConfigurationClassPostProcessor
4、BeanPostProcessor的注册功能,方便后续对bean物件完成具体的扩展功能
5、通过反射的方式讲BeanDefinition物件实体化成具体的bean物件,
6、bean物件的初始化程序(填充属性,呼叫aware子类的方法,呼叫BeanPostProcessor前置处理方法,呼叫init-mehtod方法,呼叫BeanPostProcessor的后置处理方法)
7、生成完整的bean物件,通过getBean方法可以直接获取
8、销毁程序
自己的理解和了解过的实作程序
反射、工厂,关键的几个方法
createBeanFactory、getBean、doGetBean、createBeanInstance(getDeclaredConstructor, newInstance)、populateBean、initializingBean
1、先通过createBeanFactory创建出一个Bean工厂(DefaultListableBeanFactory)
2、开始回圈创建物件,因为容器中的bean默认都是单例的,所以优先通过getBean,doGetBean从容器中查找,找不到的话,
3、通过createBean,doCreateBean方法,以反射的方式创建物件,一般情况下使用的是无参的构造方法(getDeclaredConstructor,
newInstance)
4、进行物件的属性填充populateBean
5、进行其他的初始化操作(initializingBean)
0 评论