• spring、spring mvc以及IOC的阅读


    spring vs spring-mvc

    • spring是应用级框架
    • spring mvc只是一个mvc框架
    • spring现在包含很多子模块,我们用的最多的是依赖注入。
    • spring模块可分为以下:
      • Core Container:
      • Data Access/Integration:
      • Web:
      • 其他,如AOP、Aspects、Test等:
    • spring模块框架如下:
      Spring Framework Architecture

    使用Spring框架的优点

    • 像开发POJO类一样去开发企业应用程序
    • 模块化管理
    • 集成多种技术如ORM、logging、Quartz、JDK timers等
    • 方便测试

    使用Spring框架的缺点

    • 第一、软件系统中由于引入了第三方IOC容器,生成对象的步骤变得有些复杂,本来是两者之间的事情,又凭空多出一道- 手续,所以,我们在刚开始使用IOC框架的时候,会感觉系统变得不太直观。
    • 第二、由于IOC容器生成对象是通过反射方式,在运行效率上有一定的损耗。如果你要追求运行效率的话,就必须对此进行权衡,如WEB2.0。
    • 第三、具体到IOC框架产品(比如:Spring)来讲,需要进行大量的配制工作,比较繁琐,对于一些小的项目而言,客观上也可能加大一些工作成本
    • 第四、IOC框架产品本身的成熟度需要进行评估,如果引入一个不成熟的IOC框架产品,那么会影响到整个项目,所以这也是一个隐性的风险。

    Spring IoC

    Spring IoC Container

    1.两种容器:

    • Spring BeanFactory Container
    • Spring ApplicationContext Container
      ApplicationContext container包含了BeanFactory container的全部功能,在企业级应用中首推ApplicationContext容器;
      但是在轻量级应用如移动设备和applet小程序中,BeanFactory仍有用武之地。

    2.Metadata配置

    • XML based configuration file
    • Annotation-based configuration
    • Java-based configuration

    Spring IoC容器作用

    IOC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖关系的对象之间的解耦。
    由于引进了中间位置的“第三方”,也就是IOC容器,使得A、B、C、D这4个对象没有了耦合关系,齿轮之间的传动全部依靠“第三方”了,全部对象的控制权全部上缴给“第三方”IOC容器,所以,IOC容器成了整个系统的关键核心,它起到了一种类似“粘合剂”的作用,把系统中的所有对象粘合在一起发挥作用,如果没有这个“粘合剂”,对象与对象之间会彼此失去联系,这就是有人把IOC容器比喻成“粘合剂”的由来。


    图1:软件系统中耦合的对象


    图3:IOC解耦过程


    图4:拿掉IoC容器后的系统

    IOC名称的由来

    控制反转(IOC)到底为什么要起这么个名字?我们来对比一下:

    软件系统在没有引入IOC容器之前,如图1所示,对象A依赖于对象B,那么对象A在初始化或者运行到某一点的时候,自己必须主动去创建对象B或者使用已经创建的对象B。无论是创建还是使用对象B,控制权都在自己手上。

    软件系统在引入IOC容器之后,这种情形就完全改变了,如图3所示,由于IOC容器的加入,对象A与对象B之间失去了直接联系,所以,当对象A运行到需要对象B的时候,IOC容器会主动创建一个对象B注入到对象A需要的地方。

    通过前后的对比,我们不难看出来:对象A获得依赖对象B的过程,由主动行为变为了被动行为,控制权颠倒过来了,这就是“控制反转”这个名称的由来。

    IOC的别名:依赖注入(DI)

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

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

    参考资料

    【1】Spring quick guide
    http://www.tutorialspoint.com/spring/spring_quick_guide.htm
    【2】Spring的IOC原理
    http://www.importnew.com/14751.html
    【3】Spring MVC框架搭建-页面最后是详细的搭建过程链接
    http://www.tutorialspoint.com/spring/spring_web_mvc_framework.htm





  • 相关阅读:
    数组迭代方法
    promise
    Gulp执行预处理
    第一个gulp 项目
    vue 单元素过渡
    webpack 入门
    webpack初始化
    v-for 指令
    ajax 工作原理
    面试小问题
  • 原文地址:https://www.cnblogs.com/myitroad/p/5693034.html
Copyright © 2020-2023  润新知