我们为什么要学习Spring?

举报
且听风吟 发表于 2019/10/27 15:52:05 2019/10/27
【摘要】 序言通过使用Spring的IoC容器,可以对这些耦合关系(对Java代码而言)实现一个简单的文本化的操作;即是说通过一个或几个XML文文件,我们就可以方便的对应用对象的耦合关系进行浏览、修改和维护,这样可以在很大程度上简化应用的开发。并且,通过IoC容器实现的依赖反转,可以把依赖关系的管理从Java对象中解放出来交给IoC容器(即Spring框架)来完成,从而完成对象之间的关系解耦;让原本的...

序言

通过使用Spring的IoC容器,可以对这些耦合关系(对Java代码而言)实现一个简单的文本化的操作;即是说通过一个或几个XML文文件,我们就可以方便的对应用对象的耦合关系进行浏览、修改和维护,这样可以在很大程度上简化应用的开发。并且,通过IoC容器实现的依赖反转,可以把依赖关系的管理从Java对象中解放出来交给IoC容器(即Spring框架)来完成,从而完成对象之间的关系解耦;让原本的对象-对象关系转化为对象-IoC容器-对象的关系,通过这种关系来体现Spring框架对应用平台的巨大作用。

对Spring来说,

  • 一方面,它通过IoC容器来管理POJO对象,以及它们相互之间的耦合关系,使企业的信息(数据)资源可以用简单的Java语言来抽象和描述;

  • 另一方面,可以通过AOP,以动态和非侵人式的方式来增强服务的功能。

所以,我们可以把IoC容器和AOP模块看做Spring的核心部分。作为核心,它们代表了最为基础的底层抽象,同时也是Spring其它模块实现的基础。虽然作为使用者的我们大多数是开发者,只是在这两个模块的基础上进行相关的配置和使用,但是如果能够了解这两个核心模块的设计和实现,就像了解Linux核心的实现一样!毫无疑问,会让我们对整个平台的了解更上一层楼,对平台的认识也更为全面和系统

Spring整体架构草图

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

应用场景

Spring是一个轻量级的框架。在Spring这个一站式应用平台或框架中,其中的各个模块除了依赖IoC容器和AOP之外,相互之间并没有很强的耦合性。Spring的最终目标是简化应用开发的编程模型。

它所提供的服务,可以贯穿应用到整个软件中,从最上层的WebUI到底层的数据操作,到其他企业信息数据的集成,再到各种J2EE服务的使用等等。这些企业应用服务,Spring都通过其特有的IoC容器和AOP模块实现。在实现过程中,Spring没有把这种复杂性转换成自己被使用的复杂性,这点无疑是成功的,同时大大拓宽了Spring的应用场景。一方面,我们可以把Spring作为一个整体来使用,另一方面,也可以各取所需,把Spring的各个模块拿出来独立使用,提供服务的具体需求。

因而,在对Spring的使用中,我们看到应用很少依赖于Spring特有的API;同时,由于spring本身的设计也是非常模块化的,这就为应用开发提供了EJB开发不曾提供的便利。

Spring的价值

在对Spring的应用中,Spring团队为我们列举了Spring的价值,非常值得参考:

  • Spring是一个非侵人性(non-invasive)框架,其目标是使应用程序代码对框架的依赖最小化,应用代码可以在没有Spring或者其他容器的情况下运行。

  • Spring提供了一个一致的编程模型,使应用直接使用POJO开发,从而可以与运行环境(如应用服务器)隔离开来。

  • Spring推动应用的设计凤格向面向对象及面向接口编程转变,提高了代码的重用性和可测试性。

  • Spring改进了体系结构的选择,虽然作为应用平台,Spring可以帮助我们选择不同的技术实现,比如从Mybatis切换到其他ORM工具,从SpringMVC切换到Struts,尽管我们通常不会这样做,但是我们在技术方案上选择使用Spring作为应用平台,Spring至少为我们提供了这种可能性和选择,从而降低了平台锁定的凤险。

参考书籍:

《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》

本文转载自公众号【java学习之道】。

原文链接:https://mp.weixin.qq.com/s/9mcZ5bwhrQ_sJdK5kFsluA

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。