码迷,mamicode.com
首页 > 编程语言 > 详细

spring、spring mvc以及IOC的阅读

时间:2016-07-21 21:47:45      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

spring vs spring-mvc

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

使用Spring框架的优点

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

使用Spring框架的缺点

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

Spring IoC

技术分享

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





spring、spring mvc以及IOC的阅读

标签:

原文地址:http://www.cnblogs.com/myitroad/p/5693034.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!