Spring源码学习(1) — 总体概述

来源:互联网 发布:人工智能生活应用实例 编辑:程序博客网 时间:2024/05/22 03:02

        前言:本文采用Jdk版本为 jdk1.8.0_111;Spring版本为4.3.10.RELEASE;

本文及后续实例分析的切入点皆是ClassPathXmlApplicationContext类。


一、Spring核心架构思路

        Spring核心组件:core、beans、context , 三个组件构成了Spring的最基础最核心的骨骼架构。
            1. core提供很多Spring中常用的工具,以及最主要的两个接口:Resource和ResourceLoader;
            2. beans提供了Spring中核心的几个接口:BeanFactory、BeanDefinition和BeanDefinitionReader;
            3. context则提供了对外服务的标准接口ApplicationContext。

        Spring创建IOC容器所经历的过程大概是:
            1. 定位:在这个过程中,Spring是交给core的ResourceLoader来完成的,通过创建context时传入的参数路径,进行资源的定位,将所有资源的详细路径获取到,并转化为一个个具体的Resource,Resource本身的意义就是对具体资源的描述,其内部存储着资源文件的相关属性。实际上ClassPathXmlApplication中所用到的Resource是FileSystemResource,所用到的ResourceLoader是PathMatchingResourcePatternResolver;
            2. 载入:是循环执行Resource文件内容的载入,将Resource文件的内容读入到容器中,读入的过程是委托beans中的DocumentLoader来进行读入的,读完后将内容存储到Document中,该过程是在BeanDefinitionReader中进行的;
            3. 解析:将上一环节的Document实例中的内容解析成bean的过程,委托BeanDefinitionDocumentReader来进行的,将Document中的Element转为BeanDefinition,该过程是在BeanDefinitionReader中完成的;
            4. 注册:将上一环节解析出来的BeanDefinition注册到容器中,bean最终是存储在HasMap中的,HashMap存放的地方是在DefaultListableBeanFactory中。

        
暂时理解的不是很到位,该系列后面研究好了再写

        
原创粉丝点击