Spring的核心技术内幕

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liiuijkiuu/article/details/52674774

内部工作机制:

  • Spring 的abstractApplicationContext 是ApplicationContext 抽象实现类,该类中的refesh()方法定义了Spring 容器在加载配置文件后的各项处理过程 操作的步骤:1.初始化BeanFactory:根据配置文件实例化BeanFactory ,getBeanFactory()方法由具体子类实现。在这一步中,Spring 将配置文件的信息装入到容器的bean定义注册表,但此时Bean还未初始化;
  • 调用工厂后处理器:根据反射机制从BeanDefinitionRegistry 中找出所有的BeanFactoryPostProcessor 类型的bean并调用其postProcessBeanFactory()方法
  • 注册Bean后的处理器:根据反射机制从BeanDefinitionRegistry 中找出所有BeanFactoryPostProcessor 类型的bean 并将他们注册到容器Bean后的处理器注册表中。
  • 初始化消息源:初始化容器的国家化信息资源
  • 初始化上下文事件广播器:
  • 初始化其他特殊的bean
  • 注册事件的监听器
  • 初始化singleton 的bean:实例化所有的singleton 的bean 并将他们放入到spring 容器的缓存中;
  • 发布上下文刷新事件:创建上下文刷新事件,事件广播器负责将这些事件广播到每个注册的事件监听器中

Ioc 就是beanFactory 俗称工厂类 工厂肯定有流水线 IOC流水线
- ResourceLoader 装载配置文件 并用Resource 表示这个配置文件的资源
- 使用BeanDefinitionReader 读取Resource 所指向的配置文件资源 ,然后解析配置文件。配置文件中每一个解析成一个beanDefinition 对象,并保存到BeanDefinitionRegistry中;
- 容器扫描BeanDefinitionRegistry中的BeanDefinition 使用java的反射机制自动识别出Bean 工厂处理器(实现了BeanFactoryPostProcessor 接口)的bean 然后调用这些Bean工厂后处理器对BeanDefinitionRegitry 中的beanDefinition进行加工处理
- Spring 容器从BeanDefinitionRegity中取出加工后的BeanDefinition 并调用InstantiationStrategy 着手进行Bean实例化的工作;
- 在实例化Bean时Spring 容器使用BeanWrapper 对Bean进行封装 BeanWrapper提供了很多以java反射机制操作Bean 的方法,它将结合Bean的BeanDefinition 以及容器中属性编辑器完成 Bean属性的设置工作;
- 利用容器中注册的bean 后处理器对已经完成属性设置工作的Bean进行后续加工直接装配出一个准备就绪的Bean

Spring 组件按其所承担的角色可以划分为两类:
1.物料组件:Resource BeanDeFinition PropertyEditor 以及最终的Bean等 他们是加工流程中被加工、被消费的组件,就像流水线上被加工的物料
2.加工设备组件:ResourceLoader BeanDefinitionReader、BeanFatoryPostProcessor、InstantiationStrategy 以及BeanWrapper 等组件像流水线上不同环节的加工设备对物料组件进行加工处理

猜你喜欢

转载自blog.csdn.net/liiuijkiuu/article/details/52674774
今日推荐