美文网首页
Spring精髓(一)-Spring核心组件装配流程解析

Spring精髓(一)-Spring核心组件装配流程解析

作者: 小安的大情调 | 来源:发表于2020-06-11 23:05 被阅读0次

    我准备战斗到最后,不是因为我勇敢,是我想见证一切。 --双雪涛《猎人》


    [TOC]
    Thinking

    1. 一个技术,为什么要用它,解决了那些问题?
    2. 如果不用会怎么样,有没有其它的解决方法?
    3. 对比其它的解决方案,为什么最终选择了这种,都有何利弊?
    4. 你觉得项目中还有那些地方可以用到,如果用了会带来那些问题?
    5. 这些问题你又如何去解决的呢?

    本文主要基于 Spring 5.2.7.BUILD-SNAPSHOT

    春天这么春天,冬天还会远吗?Fuker!!!

    提到Spring 总是第一时间想到它的集大成者,优雅且高效,提供的各种好用的功能,Ioc,DI等。

    其实看似非常智能的Spring,做的每一步,都是各种代码配合着,勤勤恳恳的在底层工作着。

    1、Spring核心组件装配流程解析

    首先思考一下,Spring要想实现所有的功能。如果是你,具体要做什么,

    1. 首先要读取配置文件吧(不管是xml还是注解,都要获取到该读取的配置文件吧!)
    2. 读取到配置文件之后呢?要加载解析吧
    3. 解析完成,才能做具体的操作吧

    那么来看看spring具体的做法鸭!!!

    1.1、Spring核心组件装配流程文字解释

    1. 需要将bean的定义信息声明在Spring的配置文件中。(运行代码之前)
    2. 需要通过Spring抽象出各种Resource来指定对应的配置文件。
    3. 需要显式申明一个Spring工厂,该工厂用来掌控我们在配置文件中锁声明的各种bean以及bean之间的依赖关系与注入关系
    4. 需要定义一个配置信息读取器,该读取器用来读取之前所定义的bean配置文件信息
    5. 读取器的作用是读取我们所声明的配置文件信息,并且将读取后的信息装配到之前所有声明的工厂当中
    6. 需要将读取器与工厂以及资源对象进行相应的关联处理。
    7. 工厂管理的全部对象装配完毕,可以供客户端直接调用,获取客户端想要使用的各种bean对象

    总结为一下三个步骤

    1. 资源抽象
    2. 工厂
    3. 配置信息读取器

    Spring 将上述的所有功能都抽取出来,在2001年的时候就有如此优秀且先进的想法真的牛!

    spring 最顶层的抽象 :org.springframework.beans.factory.BeanFactory类似于java中的java.lang.Object

    Spring 的 资源访问 顶层接口:{@link Resource}

    1.2、思想落地到代码上

    使用的xml的方式

    // 获取 xml文件,创建获取资源文件
    Resource resource = new ClassPathResource("applicationContext.xml");
    
    // 很早之前是使用xmlBeanFactory, 因为这种工厂spring意识到功能太单一了。
    //XmlBeanFactory xmlBeanFactory = new XmlBeanFactory(resource);
    
    // spring中一般都是使用工厂来加载文件的
    DefaultListableBeanFactory defaultListableBeanFactory = new DefaultListableBeanFactory();
    
    BeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(defaultListableBeanFactory);
    
    beanDefinitionReader.loadBeanDefinitions(resource);
    
    // 上述所有的步骤是完成了 资源的解析,工厂的装配
    
    // 下面的步骤就是使用工厂 提取具体的bean信息
    
    Student student = (Student) defaultListableBeanFactory.getBean("student");
    
    System.out.println(student);
    
    • 在后面,会围绕着上面简单的代码,逐步的分析Spring的底层源码。
    • 建议阅读《Spring源码深度解析 2》

    源码地址

    本文仅供笔者本人学习,一起进步!

    加油!

    相关文章

      网友评论

          本文标题:Spring精髓(一)-Spring核心组件装配流程解析

          本文链接:https://www.haomeiwen.com/subject/eoqwtktx.html