• Spring相关概念


    1. 初识Spring

    官网:https://spring.io 。Spring能干什么:用以开发web、微服务以及分布式系统等

    • Spring发展到今天已经形成了一种开发的生态圈,Spring提供了若干个项目,每个项目用于完成特定的功能。

      image-20210729171850181

      说明:

      图中的图标都代表什么含义,可以进入 https://spring.io/projects 网站进行对比查看。

      这些技术并不是所有的都需要学习,额外需要重点关注:

      • Spring Framework:Spring中最早最核心的技术,也是所有其他技术的基础
      • SpringBoot:在Spring简化开发的基础上加速开发
      • SpringCloud:分布式之微服务架构的相关开发
      1629714811435

    2. Spring系统架构

    • Spring Framework是Spring生态圈中最基础的项目,是其他项目的根基。

    • Spring Framework的5版本目前没有最新的架构图,而最新的是4版本,所以接下来主要研究的是4的架构图

      1629720945720

      (1)核心层

      • Core Container:核心容器,这个模块是Spring最核心的模块,其他的都需要依赖该模块

      (2)AOP层

      • AOP:面向切面编程,它依赖核心层容器,目的是在不改变原有代码的前提下对其进行功能增强
      • Aspects:AOP是思想,Aspects是对AOP思想的具体实现

      (3)数据层

      • Data Access:数据访问,Spring全家桶中有对数据访问的具体实现技术
      • Data Integration:数据集成,Spring支持整合其他的数据层解决方案,比如Mybatis
      • Transactions:事务,Spring中事务管理是Spring AOP的一个具体实现,也是后期学习的重点内容

      (4)Web层

      • 这一层的内容将在SpringMVC框架具体学习

      (5)Test层

      • Spring主要整合了Junit来完成单元测试和集成测试

    3. IOC、IOC容器、Bean、DI

    3.1 IOC(Inversion of Control)控制反转

    3.1.1 什么是控制反转呢?
    • 使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。

      • 业务层要用数据层的类对象,以前是自己new
      • 现在自己不new了,交给别人[外部]来创建对象
      • 别人[外部]就反转控制了数据层对象的创建权
      • 这种思想就是控制反转
      • 别人[外部]指定是什么呢?
    3.1.2 Spring和IOC之间的关系是什么呢?
    • Spring技术对IOC思想进行了实现
    • Spring提供了一个容器,称为IOC容器,用来充当IOC思想中的"外部"
    • IOC思想中的别人[外部]指的就是Spring的IOC容器
    3.1.3 IOC容器的作用以及内部存放的是什么?
    • IOC容器负责对象的创建、初始化等一系列工作,其中包含了数据层和业务层的类对象
    • 被创建或被管理的对象在IOC容器中统称为Bean
    • IOC容器中放的就是一个个的Bean对象
    3.1.4 当IOC容器中创建好service和dao对象后,程序能正确执行么?
    • 不行,因为service运行需要依赖dao对象
    • IOC容器中虽然有service和dao对象
    • 但是service对象和dao对象没有任何关系
    • 需要把dao对象交给service,也就是说要绑定service和dao对象之间的关系

    3.2 DI(Dependency Injection)依赖注入

    1629735078619
    3.2.1 什么是依赖注入呢?
    • 在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入
      • 业务层要用数据层的类对象,以前是自己new
      • 现在自己不new了,靠别人[外部其实指的就是IOC容器]来给注入进来
      • 这种思想就是依赖注入
    3.2.2 IOC容器中哪些bean之间要建立依赖关系呢?
    • 这个需要程序员根据业务需求提前建立好关系,如业务层需要依赖数据层,service就要和dao建立依赖关系

    介绍完Spring的IOC和DI的概念后,我们会发现这两个概念的最终目标就是:充分解耦,具体实现靠:

    • 使用IOC容器管理bean(IOC)
    • 在IOC容器内将有依赖关系的bean进行关系绑定(DI)
    • 最终结果为:使用对象时不仅可以直接从IOC容器中获取,并且获取到的bean已经绑定了所有的依赖关系.

    4. 总结

    内容来B站黑马程序员课程 。老师讲得很好,有兴趣的可以听听。

  • 相关阅读:
    操作系统-(第一章上)
    LeetCode 2343. 裁剪数字后查询第 K 小的数字 暴力+语法考察
    CesiumJS 2022^ 源码解读[7] - 3DTiles 的请求、加载处理流程解析
    唯一刊登学生历史学术论文的期刊
    Texlive2020 for win10 宏包更新
    java计算机毕业设计人才库构建研究源程序+mysql+系统+lw文档+远程调试
    Redis为什么变慢了
    Mac机RVM安装,手动下载安装,经过验证可以正常使用
    BUUCTF学习(7): 随便注,固网杯
    某综合性能源集团绩效考核设计项目纪实
  • 原文地址:https://www.cnblogs.com/tianaqiang/p/16610201.html