• [01] Why Spring



    1、何为框架

    简单来说,框架就是制定了一套规范或者规则(思想),让程序员在该规范或规则下进行工作。如上图修楼房,在有框架的情况下,修建工作才高效且有条不紊。楼层钢架规定了大楼的结构,工人按架构添砖放瓦,最终形成了完整的大楼。

    在编程中同样如此,框架做一部分功能,我们自己做一部分功能,最终就完成了一个应用程序。框架主要规定了开发应用程序时的整体架构,提供了一些基础功能,还规定了类和对象的如何创建、如何协作等,从而简化我们开发。

    正因如此,我们可以看出框架的特点:
    • 半成品,它没有业务流程
    • 封装了一些特定的处理流程和控制逻辑
    • 目的是为了简化开发


    2、IOC 和 DI

    在讨论为什么使用Spring之前,我们先大概了解下什么是IOC和DI,而再这之前呢,我们还要在先来谈谈面向接口编程。

    接口的特点大家已经很熟悉了,它实现了多态性,同时隐藏了具体的功能(实现)。这就导致在面向接口编程中,我们可以便捷地修改具体的实现内容,却不影响各层之间的调用,这一点在公共服务中是尤为重要的。

    假如有某接口我们命名为OneInterface,有其实现类我们命名为OneInterfaceImpl,那么我们在使用时,往往是这样:
    OneInterface demo = new OneInterfaceImpl(); 

    OneInterface的创建工作,是我们通过new来实现的,那么问题来了,假如有成千上百个地方要用到这个接口,我们需要new成千上百次实体类。因为创建工作交给我们自己了,我们不new,它们不会平白无故地出现。

    能不能把创建工作交给别人呢?当然可以,这就是所谓的IOC:Inversion of Control 控制反转,应用程序本身将不再负责依赖对象的创建和维护,而是由外部容器负责创建和维护。这里的外部容器,自然就是指框架了。但控制反转只是一种现象描述,如何实现呢?DI,Dependency Injection 依赖注入,就是IOC的一种实现方式,通过创建对象并且组装对象之间的关系(假设A依赖B,那么DI即指容器自动创建A和B,并将B注入set到A中去)。

    看个形象的比喻:
     
    那么终于谈一谈为什么使用Spring,其中的一个特点,就是因为Spring拥有IOC/DI的能力


    3、AOP

    有如上这样三个方法,代码功能各不相同,但是都重复使用到了代码片段A和B。如此场景,比较典型的就是:开启事务,对数据库表进行操作,提交事务。

    一些重复的功能,我们可以剥离出来作为公共的方法,可是方法中公共的代码,我们也想剥离出来以共用:
     
    我们希望将A、B这些分散在各个业务逻辑中的相同代码,通过横向切割的方式抽取到一个独立的模块中,还业务逻辑类一个清新的世界。这,就是AOP,Aspect Oriented Programming 面向切面编程。

    Spring,就是这样一款支持AOP的框架


    4、Why Spring

    说到这里,Why Spring已经显而易见了:
    • IOC/DI
    • AOP
    • 轻量级(非侵入式,从框架来说,即无需继承框架的某类,更换框架后代码也可重用)
    • 容器(管理对象生命周期)
    • 简单的数据库事务管理
    • JDBC抽象及ORM框架支持
    • 灵活的Web层支持
    • 简化各个技术的集成


    5、参考链接

  • 相关阅读:
    教程-Supports判断接口(Instance)是否支持
    Android实例-如何使用系统剪切板(XE8+小米2)
    Android实例-从照相机或图库获取照片(XE8+小米2)
    Android实例-TTabControl的使用(XE8+小米2)
    Android实例-闪光灯的控制(XE8+小米2)
    WCF小问题总汇
    wpf程序线程与UI内容交互
    xml解析原理一些想法
    XML序列化
    C#用正则表达式一键Unicode转UTF8(解决LitJson中文问题)
  • 原文地址:https://www.cnblogs.com/deng-cc/p/8834976.html
Copyright © 2020-2023  润新知