第一部分 Spring概述

一、Spring简介

Spring是分层的full-stack(全栈)轻量级开源框架,以IOC和AOP为主要核心思想,提供了展现层Spring MVC和业务层事务(编程式事务和声明式事务)管理等众多的企业级应用技术,并且整合了世界上众多著名的第三方框架和类库,已经成为使用最多的Java EE企业应用开源框架

Spring官方网站地址:https://spring.io/

我们常说的Spring框架其实指的 Spring Framework


image.png

二、Spring的发展历程

  • 1997年 IBM 提出了EJB(Enterprise Java Beans技术的简称)的思想;
    1998年,SUN 制定开发标准规范EJB1.0;
    1999年,EJB 1.1发布;
    2001年,EJB 2.0发布;
    2003年,EJB 2.1发布;
    2006年,EJB 3.0发布;

  • 当Java EE和EJB大行其道的时候,很多知名公司都是采用此技术方案进行项目开发。这时候有一个美国的小伙子Rod Johnson(spring之⽗)认为 EJB 太过臃肿,并不是所有的项目都需要使用 EJB 这种大型框架,应该会有一种更好的方案来解决这个问题

  • 他为了证明自己的想法是正确的,在2001年10月写了一本书《Expert One-on-One J2EE》,介绍了当时Java企业应用程序开发的情况,并指出了 Java EE 和 EJB 组件框架中存在的一些主要缺陷。

  • Expert One-to-One J2EE Design and Development(2002), 阐述了J2EE使⽤EJB开发设计的优点及解决⽅案

  • 2003 年 Rod Johnson 和同伴在此框架的基础上开发了一个全新的框架命名为 Spring,据 Rod Johnson 介绍 Spring 是传统 J2EE 新的开始,随后 Spring 发展进入快车道

  • Expert One-to-One J2EE Development without EJB(2004) 阐述了J2EE开发不使⽤EJB的解决⽅式(Spring雏形)

  • 2004 年 03 月,1.0 版发布

  • 2006 年 10 月,2.0 版发布

  • 2007 年 11 月,更名为 SpringSource,同时发布了 Spring 2.5

  • 2009 年 12 月,Spring 3.0 发布

  • 2013 年 12 月,Pivotal 宣布发布 Spring 框架 4.0

  • 2017 年 09 月,Spring 5.0 发布

三、Spring的优势

1、方便解耦,简化开发

通过Spring提供的IOC容器,可以将对象间的依赖关系交由Spring进⾏控制,避免对象间相互依赖硬编码所造成的过度程序耦合。⽤户也不必再为单例模式类、属性⽂件解析等这些很底层的需求编写代码,可以更专注于上层的应⽤。

2、AOP编程的⽀持

通过Spring的AOP功能,⽅便进⾏⾯向切⾯的编程,许多不容易⽤传统OOP实现的功能可以通过AOP轻松应付

3、声明式事务的⽀持

通过简单的注解@Transactional,可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式⽅式灵活的进⾏事务的管理,提⾼开发效率和质量。

4、⽅便集成各种优秀框架

Spring可以降低各种框架的使⽤难度,提供了对各种优秀框架(Struts、Hibernate、Hessian、Quartz等)的直接⽀持。

5、降低JavaEE API的使⽤难度

Spring对JavaEE API(如JDBC、JavaMail、远程调⽤等)进⾏了简单的封装,使这些API的使⽤难度⼤为降低。

四、 Spring 的核⼼结构

Spring是⼀个分层⾮常清晰并且依赖关系、职责定位⾮常明确的轻量级框架,主要包括⼏个⼤模块:数据处理模块、Web模块、AOP(Aspect Oriented Programming)/Aspects模块、Core Container模块和 Test 模块,如下图所示,Spring依靠这些基本模块,实现了⼀个令⼈愉悦的融合了现有解决⽅案的零侵⼊的轻量级框架。


Spring架构图.jpg
  • Spring核⼼容器(Core Container)
    容器是Spring框架最核⼼的部分,它管理着Spring应⽤中bean的创建、配置和管理。在该模块中,包括了Spring bean⼯⼚,它为Spring提供了DI的功能。基于bean⼯⼚,我们还会发现有多种Spring应⽤上下⽂的实现。所有的Spring模块都构建于核⼼容器之上。

  • ⾯向切⾯编程(AOP)
    Aspects Spring对⾯向切⾯编程提供了丰富的⽀持。这个模块是Spring应⽤系统中开发切⾯的基础,与DI⼀样,AOP可以帮助应⽤对象解耦。

  • 数据访问与集成(Data Access/Integration)
    Spring的JDBC和DAO模块封装了⼤量样板代码,这样可以使得数据库代码变得简洁,也可以更专注于我们的业务,还可以避免数据库资源释放失败⽽引起的问题。 另外,Spring AOP为数据访问提供了事务管理服务,同时Spring还对ORM进⾏了集成,如Hibernate、MyBatis等。该模块由JDBC、Transactions、ORM、OXM 和 JMS 等模块组成

  • Web
    该模块提供了SpringMVC框架给Web应⽤,还提供了多种构建和其它应⽤交互的远程调⽤⽅案。 SpringMVC框架在Web层提升了应⽤的松耦合⽔平。

  • Test
    为了使得开发者能够很⽅便的进⾏测试,Spring提供了测试模块以致⼒于Spring应⽤的测试。 通过该模块,Spring为使⽤Servlet、JNDI等编写单元测试提供了⼀系列的mock对象实现。

五、Spring的框架版本

image.png

Spring Framework不同版本对 Jdk 的要求


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

推荐阅读更多精彩内容

  • 官方文档地址:http://docs.spring.io/spring/docs/current/spring-f...
    步积阅读 1,750评论 0 22
  • 在诞生之初,Spring的主要目的是用来替代更加重量级的企业级JAVA技术,尤其是EJB。Spring提供了更加轻...
    vernwang阅读 560评论 0 50
  • 这篇文章只是对书籍学习过程中一些知识点的描述。 1.Spring 1.1.Spring的使命 Spring最根本的...
    汤圆馅阅读 230评论 0 0
  • 一、什么是Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框...
    炳学阅读 410评论 2 0
  • 一、Spring 简介 Spring 是分层的 full-stack(全栈) 轻量级开源框架,以 IOC 和 AO...
    Travis_Wu阅读 247评论 0 0