Spring容器的原理

1、Spring 的 IoC 容器是一个提供IoC支持的轻量级容器,除了基本的 IoC 支持,还提供了相应的 AOP 框架支持、企业级服务集成等服务。Spring提供了两种容器类型:BeanFactory 和 ApplicationContext。

2、容器的作用,是以某种方式加载 Configuration Metadata(通常也就是XML配置信息),然后根据这些信息绑定整个系统的对象,最终组装成一个可用的基于轻量级容器的应用系统。

3、容器的实现以上功能的过程,可以分为两个阶段,即 容器启动阶段 和 Bean 实例化阶段。

4、以下对两个阶段内容做简单介绍,详细的执行流程请查看 https://www.cnblogs.com/bsyt/p/13162588.html

一、容器启动阶段:

​ 1、资源加载,通过某种途径加载 Configuration MetaData(配置信息)

​ 2、解析配置信息,封装为 BeanDefinition(bean 的描述信息,用于实例化)

​ 3、注册 BeanDefinition 到 BeanDefinitionRegistry (其实就是保存解析好的 BeanDefinition)

​ *4、插手“容器的启动”,Spring提供了一种BeanFactoryPostProcessor的容器扩展机制,该机制允许我们开发者在容器实例化对象之前,对注册到容器中的 BeanDefinition 进行修改

​ final、该阶段为准备性阶段,侧重于对象管理信息的收集

二、Bean 实例化阶段

​ start、通过调用容器的 getBean("xxx") 明确请求获取某个对象,触发该阶段

​ 1、检查所请求的对象是否已经初始化过,初始化过且为单例,直接返回对象

​ 2、未初始化过,则根据对应的 BeanDefinition 提供的信息实例化该对象

​ 3、设施对象属性,为该对象注入依赖对象,如果依赖的对象未实例化,则想递归实例化依赖的对象

​ 4、如果对象实现了某些回调接口,则根据回调接口的要求来装配它

​ *5、BeanPostProcessor 会处理容器中所有符合条件的实例化后的对象,提供了连个接口分别在不同的时机执行

​ 6、对象实例化成功后,直接返回对象(如果是单例,这保存对象)

三、写在最后

跳转目录:https://www.cnblogs.com/bsyt/p/13162588.html

posted @ 2020-07-11 15:09  白色烟头  阅读(594)  评论(0编辑  收藏  举报