美文网首页
Spring整体思想

Spring整体思想

作者: lsh的学习笔记 | 来源:发表于2020-05-23 10:10 被阅读0次

    框架也是一个软件,大多数软件的运行一般都有几个通用的步骤:

    1. 加载配置文件;
    2. 运行;

    1. Spring 的配置文件

    对于Spring来说,xml,properties,yaml,class都是配置文件。

    对,Java 的 class 文件对于Spring来说确实是一种配置文件,只不过比较特殊而已,其实想想也正常,xml可以描述一个Java对象,class也能描述一个Java对象,那其实它们之间在这个角度来说只有写法不同而已,最终要传递的信息是一样的,就像录音和文字,虽然看到的样式不一样,本质信息是一致的。

    xml、properties 、yaml 这里不讨论。主要看 Bean定义。

    BeanDefinition 是什么 ?

    Spring 的 BeanDefinition 其实就是对 Java 的 class 文件的一种扩展。

    用来干什么 ?

    • BeanDefinition ----描述----> Bean 。
    • 类----描述---->对象。

    Spring 的 BeanDefinition 在class的基础扩展了更多Spring自己的东西,比如:作用域,Spring的注解(@Controller、@Service、@Component...) 等等。

    就像 Java 根据 class 生成对象,最终Spring会根据 BeanDefinition 来生成 Bean。

    2. 容器

    Spring容器怎么来的 ?

    Spring的容器其实是对基础数据结构(用的最多的还是HashMap) 的拓展。

    • ArrayList ----扩展了---->数组;
    • Spring ----扩展了----> HashMap;

    软件通常由数据操作数据的方法组成。class 文件本质上是用来描述数据以及如何操作数据的方法。

    数组对数据的操作方式基本没有,所以ArrayList扩展了它,而Spring 觉得 HashMap 对数据的操作方式不够自己用,所以扩展了它。而且是层层扩展(扩展已有的用继承),所以会有 BeanFactory,ApplicationContext。

    注意这里主要扩展的就是操作数据的方式,在其他语言叫函数,Java叫方法,本质就是操作数据的方式。最直接的方式就是继承,这样原来的操作方式都有,再加一些自己的操作方式就可以了,当然还有聚合,只不过聚合,如果原来的操作方式还要的话,就需要写同名方法,并委托给内部的原对象执行,比较麻烦。

    为什么叫容器 ?

    容器是存放数据的,就像 数组是容器,ArrayList是容器,HashMap是容器,那么 BeanFactory 和 ApplicationContext 只是在 HashMap 容器的基础上扩展了一些 操作方法,本质还是存放数据的,叫容器也很通顺。

    相关文章

      网友评论

          本文标题:Spring整体思想

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