• Spring简介


    1. /*
    2. *作者:呆萌老师
    3. *☑csdn认证讲师
    4. *51cto高级讲师
    5. *☑腾讯课堂认证讲师
    6. *☑网易云课堂认证讲师
    7. *☑华为开发者学堂认证讲师
    8. *☑爱奇艺千人名师计划成员
    9. *在这里给大家分享技术、知识和生活
    10. *各种干货,记得关注哦!
    11. *vx:it_daimeng
    12. */

    一.spring框架

    1.spring介绍

    ​ spring框架:spring是一个非常活跃的开源框架。基于IOC和aop来构架多层javaee系统,以帮助分离项目组件之间的依赖关系(解耦)

    底层: 工厂模式+xml

    2.Spring功能

    Spring ioc能够帮我们根据配置文件创建及组装对象之间的依赖关系

    Spring aop能够帮助我们无耦合的实现日志记录,性能统计,安全控制

    spring能够非常简单的帮我们管理数据库事务

    spring提供了与第三方数据访问框架无缝连接,比如Hibernate,mybatis,而且自己也提供了一套jdbc模板来用来数据的访问

    spring还提供了与第三方web框架的无缝连接,比如structs,并且自己也提供了一套springMVC框架,来方便web层搭建

    spring能方便的与javaee技术整合,比如Java mail,任务调度,还可以与其它技术整合,比如缓存.

    3.Spring组成图

    core - 核心模块

    • spring-core:依赖注入IoC与DI的最基本实现

    • spring-beans:Bean工厂与bean的装配

    • spring-context:spring的context上下文即IoC容器

    • spring-context-support:Spring context的扩展支持,用于MVC方面

    • spring-expression:spring表达式语言

    二. IOC和DI

    依赖注入或控制反转的定义中,调用者不负责被调用者的实例创建工作,该工作由Spring框架中的容器来负责,它通过开发者的配置来判断实例类型,创建后再注入调用者。由于Spring容器负责被调用者实例,实例创建后又负责将该实例注入调用者,因此称为依赖注入。而被调用者的实例创建工作不再由调用者来创建而是由Spring来创建,控制权由应用代码转移到了外部容器,控制权发生了反转,因此称为控制反转

    1. IOC-控制反转

    IOC是 Inverse of Control 的简写,意思是控制反转。是降低对象之间的耦合关系的设计思想。

    通过IOC,开发人员不需要关心对象的创建过程,交给Spring容器完成。具体的过程是,程序读取Spring 配置文件,获取需要创建的 bean 对象,

    通过反射机制创建对象的实例。

    缺点:对象是通过反射机制实例化出来的,因此对系统的性能有一定的影响。

    将对象的创建权利翻转给Spring容器.

    2. DI-依赖注入

    Dependency Injection,说的是创建对象实例时,同时为这个对象注入它所依赖的属性。相当于把每个bean与bean之间的关系交给容器管理。而这个容器就是spring。

    例如我们通常在 Service 层注入它所依赖的 Dao 层的实例;在 Controller层注入 Service层的实例。

    3. IOC和DI

    IOC的别名,2004年,Martin Fowler探讨了同一个问题,既然IoC是控制反转,那么到底是“哪些方面的控制被反转了呢?”,经过详细地分析和论证后,他得出了答案:“获得依赖对象的过程被反转了”。控制被反转之后,获得依赖对象的过程由自身管理对象变为由IoC容器主动注入。于是,他给“控制反转”取了一个更合适的名字叫做“依赖注入(Dependency Injection,DI)”。他的这个答案,实际上给出了实现IoC的方法:注入。

    所谓依赖注入,就是由IoC容器在运行期间,动态地将某种依赖关系注入到对象之中。

    所以,依赖注入(DI)和控制反转(IoC)是从不同的角度描述的同一件事情,就是指通过引入IoC容器,利用依赖关系注入的方式,实现对象之间的解耦.

  • 相关阅读:
    数字集成电路设计(四、Verilog HDL数字逻辑设计方法)(二)
    网络原理(网络协议初识)
    【毕业设计】ESP32单片机疫情防交叉感染洗手液分配系统 -物联网 嵌入式
    都2023年金九银十了,这三个项目你还没有?你简历上项目经验写啥
    Linux性能分析——TOP命令详解
    第九章-项目资源管理
    树和森林基础
    C++(37)-QT(40)QT4-QT5升级
    SQALE 是什么
    Codeforces Round #813 (Div. 2) A~C
  • 原文地址:https://blog.csdn.net/daimenglaoshi/article/details/126963141