Spring技术体系之源起之战

我从2016年4月,开始从C++阵营转向java,一开始觉得很自然,并没有什么坎。后面随着慢慢地深入学习,越发发现java的体系庞大。真所谓是:

万事开头易
然后中间难
最后结尾更难

目前所有做java项目,几乎都必须用到spring技术框架,对spring框架的了解对自己的技术提升、找工作、或者是长期的职业发展道路都至关重要。确定了这一点后,我开始查找spring相关的书籍,最终找到评价还不错的王福强的《spring揭秘》,然后开始自己的spring之旅。

0x01 Spring诞生背景

早期的J2EE平台推出的EJB规范,是为了解决CORBA等分布式架构的不足。但随着时间推移和技术发展,EJB也逐渐暴露各种形式的不足,无论是性能,还是使用上的晦涩难懂,还是笨重的框架体系,都让EJB的使用者感到失望。EJB就像是重装骑兵,代价高昂,自身兵种限制太多,发挥作用的场景有限。

于是,一场技术革命在所难免,而燃气这场革命的星星之火,就是Spring。Spring倡导一切从实际出发,以实用的态度来选择适合当前开发场景的解决方案。

Spring 在起源可以回溯到 Rod Johnson 编写的“ Expert One-to-One J2EE Design and Development ”一书 (Wrox , 2002) 。在这本书中, Rod 展示了他的 interface21 框架,他为自己的应用编写了这一框架。这一框架被发布到开源世界后,组成了现在我们所知的 Spring 框架的基础。 Spring 在早期的 beta 和发布备选版本阶段进行得很迅速,第一个正式版本 1.0 在 2004 年 3 月 24 日 发布。从开始到现在,历经16年的演变,目前已经去到Spring 5了。
官网:http://www.springframework.org

技术是发展的,但思想是延续的,当我们借助Spring之船飞渡波澜不惊的水面亦或闯过惊涛骇浪,不要忘记,或许某天我们会踏上另一条更好的船舶,但Spring之船带给我们的思想,却始终陪伴着我们,激励也好,鞭策也善......

0x02 Spring框架概述

Spring框架所倡导的基于POJO(Plain Old Java Object,简单Java对象)的轻量级开发理念,就是从实际出发,立足于最基础的POJO。我们把POJO对象类比为人类或者是在地球生态生存的动植物,Spring框架就好像那包裹地球的大气层一样,为构筑应用的POJO提供了各种服务,进而创造了一套适宜用POJO进行轻量级开发的环境。

Spring框架为POJO提供的各种服务共同组成了Spring的生命之树,如图所示。

Spring的生命之树

组成整个Spring框架的各种服务实现被划分到了多个相互独立却又相互依赖的模块当中,这些模块组成了Spring生命之树的枝和干,说白了也就是它们组成了Spring框架的核心骨架。抓住了这副骨架,也就抓住了Spring框架的学习主线。

我们把Spring的生命之树理一下,分为一个主树干和三个分支

主树干:

整个Spring框架构建在Core核心模块之上,它是整个框架的基础。在该模块中,Spring为我们提供了一个IoC容器(IoC Container)实现,用于帮助我们以依赖注入的方式管理对象之间的依赖关系。对Spring的IoC容器的介绍将成为我们此次Spring之旅的第一站。除此之外,Core核心模块中还包括框架内部使用的各种工具类。

左分支

沿着Spring生命之树往上左序遍历,我们将来到AOP模块。该模块提供了一个轻便但功能强大的AOP框架,让我们可以以AOP的形式增强各POJO的能力,进而补足OOP/OOSD之缺憾。Spring的AOP框架符合AOP Alliance规范,采用Proxy模式构建,与IoC容器相结合,可以充分显示出Spring AOP的强大威力。我们将在了解了Spring的IoC容器的基础上,详细讲述Spring AOP这一部分。

继续上行,Spring框架在Core核心模块和AOP模块的基础上,为我们提供了完备的数据访问和务管理的抽象和集成服务。在数据访问支持方面,Spring对JDBC API的最佳实践极大地简化了该API的使用。除此之外,Spring框架为各种当前业界流行的ORM产品,比如Hibernate、iBATIS、Toplink、JPA等提供了形式统一的集成支持。Spring框架中的事务管理抽象层是Spring AOP的最佳实践,它直接构建在Spring AOP的基础之上,为我们提供了编程式事务管理和声明式事务管理的完备支持。这些服务极大地简化了日常应用开发过程中的数据访问和事务管理工作。在学习完这两部分内容之后,相信读者将会有切身的体会。

中间分支

为了简化各种Java EE服务(像JNDI、JMS以及JavaMail等)的使用,Spring框架为我们提供了针对这些Java EE服务的集成服务。在Spring的帮助下,这些Java EE服务现在都变得不再烦琐难用。因为相关的Java EE服务较多,我们将会选择合适的几种介绍Spring框架给予它们的支持。

右分支

最后要提到的就是Web模块。在该模块中,Spring框架提供了一套自己的Web MVC框架,职责分明的角色划分让这套框架看起来十分地“醒目”。我们将为Spring的Web MVC框架单独开辟一块“领地”进行讲解。在那一部分中,读者可以充分领略Web MVC框架的魅力。Spring的Portlet MVC构建在Spring Web MVC之上,延续了Spring Web MVC的一贯风格。

就像一棵树必须依赖强大的根基才能生长繁盛一样,Spring框架内的各个模块也是如此。理论上来说,上层的模块需要依赖下层的模块才能正常工作,这就是为什么说这些模块是相互依赖的。不过,近乎处于同一水平线的各个模块之间却可以认为是相互独立的,彼此之间没什么瓜葛。从这个角度看,这些模块之间的相互独立一说也是成立的。
以上就是对整个Spring框架的总体介绍。

0x03 Spring大观园

在开始愉快的Spring旅程之前,我想带大家先逛一逛“Spring大观园”,这样,大家就会发现即将开始的Spring之旅更加值得期待。

Spring大观园中有一棵参天大树,它得以茁壮成长,主要因为它有一个好的根基,那就是Spring框架。在Spring框架的基础上,Spring家族人丁开始兴旺,不断涌现出一个又一个引人注目的家族成员,
包括但不限于:

  • Spring Web Flow(SWF)
  • Spring Framework;
  • Spring Security(原来的Acegi);
  • Spring Web Flow;
  • Spring Web Services;
  • Spring Dynamic Modules for the OSGi Service Platform;
  • Spring Batch;
  • Pitchfork(http://www.springsource.com/pitchfork);
  • AspectJ(http://www.eclipse.org/aspectj/);
  • Spring IDE;
  • Spring .NET;
  • Spring LDAP;
  • Spring Rich Client;
  • Spring Integration。

小结:

本文首先对Spring框架得以迅速崛起的背景做了简短介绍,然后带领读者从总体上了解了Spring框架的构成。最后粗略列举了Spring体系的成员。在开启Spring之旅之前,先要记住历史和整体的框架,后面再慢慢填充知识点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,468评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,620评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,427评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,160评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,197评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,334评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,775评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,444评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,628评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,459评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,508评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,210评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,767评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,850评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,076评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,627评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,196评论 2 341

推荐阅读更多精彩内容