文档章节

《Spring敲门砖之基础教程第一季》 第一章(3) Spring 框架历史及新功能介绍

宋建国
 宋建国
发布于 2016/08/14 16:43
字数 2278
阅读 38
收藏 0

回顾

        上一节,我们简单介绍了Spring的各个模块,包含核心Sping容器模块、Spring的AOP模块、数据访问与集成模块、web应用模块、测试模块等,接着详细分析了每个模块所覆盖的功能,各模块之间的关系,最后我们列出来各功能模块所在的jar文件,为我们后面使用spring功能打下基础。

        今天我们来分析一下sping的历史版本变更记录,并且结合最新的Spring官方文档说说它的新功能特性,以便于我们在开发项目中能够快速、熟练的应用。

Spring框架的历史

1.1 Spring 1.0 

        从网上查阅相关资料,我们知道了spring 的历史前身应该大神Rod Johnson是在2002年编著的《Expert one on one J2EE design and development》一书中提出,为了解决J2EE企业开发遇到的系列问题,从而提出的一个新的构思,以此书为蓝图进行设计,诞生了interface21框架,Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,一批自愿拓展Spring框架的程序开发员组成了团队,2003年2月在Sourceforge上构建了一个项目。在Spring框架上工作了一年之后,这个团队在2004年3月发布了第一个版本(1.0)。这个版本之后,Spring框架在Java社区里变得异常流行,部分的要归结于它好于一般水准的文档功能和参考文献,特别是对于一个开源项目而言尤其如此,当然它当时非出现也饱受批评,有人认为它脱离了传统的编程。

1.2 Spring 1.0 版本特性

作为首次发布的具有里程碑意义的1.0版本,我们详细看一下它包含哪些功能特性我来看一下:

  • 一直到如今都是最先进的轻量化容器,具有setter方式和各种构造函数注入
  • 基于AOP联盟的AOP框架拦截接口,与核心容器集成
  • JNDI支持类,能够很容易的构建通过Spring管理的bean去查找JNDI的目标对象
  • 提出应用程序上下文的概念,提供资源加载和消息访问的抽象方法
  • 通用的事务管理与插件化策略,支持声明式和编程方式的事务
  • 支持源代码级元数据,通过共享属性作为默认实现(例如事务属性)
  • 通用的DAO支持,提供了任何数据访问策略的异常层次结构
  • JDBC抽象,简化了资源和错误处理,也包括BLOB / CLOB支持
  • Hibernate的支持,提供SessionFactory的管理和ThreadLocal的会话事务管理
  • 支持类的JDO 1.0和iBATIS的SQL映射版本1.3 / 2.0,与Spring的事务一体化管理
  • 邮件发送器抽象,以对JavaMail的特殊支持,包括方便的处理附件
  • 定时任务支持,因此很容易通过Spring管理bean的方法调用任务
  • 远程处理为RMI,JAX-RPC支持
  • 容易通过类用于访问和实现EJB的本地和远程
  • Web应用程序的背景下,在web应用中加载Spring应用程序上下文
  • 灵活的Web MVC框架,建立在策略接口,并与各种视图技术集成

Spring新特性

        Spring从1.0开始经过10多年已经发展到5.0,经历了大大小小的几十个版本的变更,使其更加完善,功能更加强大,我们使用起来也更容易,下面我分析几个主要版本的一些新功能特性。

1 Spring 2.5新特性

        2007年11月,Spring团队发布了spring框架2.5版本。此版本的重大意义在于它支持注解方式开发,替代以前的基于xml的配置方式,这样更加便利,减少了很多配置信息。

  • 完全支持Java 6和Java EE 5包含(JDBC 4.0,JTA 1.1,JavaMail的1.4,JAX-WS 2.0)
  • 全新功能注解驱动的依赖注入,使用@Qualifier实现细粒度的自动化装配控制
  • 在类路径和应用程序组件支持自动扫描自动配置它们作为Spring管理对象
  • 支持AspectJ的类加载器织入
  • 新的XML配置命名空间,包括配置应用上下文的细节context命名空间和配置消息驱动bean的JMS命名空间
  • 完全修订集成测试框架,为JUnit 4中和TestNG一流的支持
  • 对于Spring MVC的支持Servlet和Portlet的环境,一个新的基于注解的控制器模型
  • 扩展了SimpleJdbcTemplate的功能,包括对SQL参数的支持
  • 官方认证WebSphere支持
  • Spring框架的包装罐子的OSGi兼容的包开箱
  • 部署Spring的ApplicationContext为JCA RAR文件的能力,支持headless 应用模块
  • JCA 1.5消息端点管理,Spring管理的JMS和CCI消息监听器

2 Spring 3.0新特性

        2009年12月,Spring团队发布了Spring框架3.0版本。此版本在注解驱动主题和几个新特性实现了进一步提升。

  • Spring MVC全面支持Rest,Spring MVC控制器响应REST风格的URL并返回XML、JSON、RSS或其他适宜的响应
  • 新的表达式语言
  • Spring的MVC注解增强
  • 增强的IOC,基于java的Bean元数据
  • 通用类型转换系统和字段格式化系统
  • Srping Web Services项目OXM功能已经迁移到Sping 架构核心
  • 支持基于JSR-302注解的声明式校验
  • 支持新的JSR-330依赖注入规范
  • 通过注解驱动声明异步和调度方法
  • 支持嵌入式数据库(方便测试)

3 Spring 4.0新特性

        2013年12月,Spring团队发布了Spring框架4.0版本。此次完全支持Java 8的特性。你仍然可以使用老版本的Java,但是最低版本的要求已经提高到Java SE 6。也借主要版本更新的机会删除了许多过时的类和方法。

  • 改进的入门体验新的spring.io网站提供了一整个系列的"入门指南"帮助你学习Spring
  • 移除过时的包和方法所有过时的包和许多过时的类和方法已经从Spring4中移除。如果你从之前的发布版升级Spring,你需要保证已经修复了所有使用过时的API方法。
  • Java 8 (以及6和7),兼容6,建议使用7或8,Spring4支持Java8的一些特性。你可以在Spring的回调接口中使用?lambda 表达式?和?方法引用。支持java.time?(JSR-310)的值类型和一些改进过的注解,例如@Repeatable。
  • Java EE 6 或以上版本是Spring4的底线,与JPA2.0和Servlet3.0规范有着特殊的意义。为了保持与Google App Engine和旧的应用程序服务器兼容,Spring4可以部署在Servlet2.5运行环境。但是我们强烈的建议您在Spring测试和模拟测试的开发环境中使用Servlet3.0+。
  • Spring4.0支持使用Groovy DSL来进行外部的bean定义配置
  • 核心容器改进
  • 常规Web改进,Spring4.0现在主要集中在Servlet 3.0+环境,新的@RestController注解,AsyncRestTemplate类已被添加进来,当开发REST客户端时,允许非阻塞异步支持
  • WebSocket、SockJS和STOMP消息
  • 测试改进,除了精简spring-test模块中过时的代码外,Spring4还引入了几个用于单元测试和集成测试的新功能。

4 Spring 5.0新特性

 Spring 5.0将在2016年发布,虽然还没发布正式版本,但已经有两个版本可以下载使用了,Spring5.0将支持JDK 9。

 Spring 5.0的特性计划还在工作中,所以请保持关注,以下属于反馈内容

  • 将JDK限制为8+会让Spring框架的代码库更干净,而且我们的核心抽象类、接口都将依赖于JDK 8的API。
  • Spring 5.0 框架肯定要将Servlet支持提升到Servlet 3.0+;
  • Spring 5.0 将保持JMS1.1+的兼容性,并将支持JMS 2.0;
  • Spring 5.0 将升级到JPA 2.1+ 和Bean Validation 1.1+

总结

Spring 1.0是一个全新的Spring框架的诞生版本,是一个轻量级的容器,Spring 2.0提供了XML命名空间和AspectJ支持;Spring 2.5增加了注释驱动(annotation-driven)的配置支持;Spring 3.0增加了对Java 5+版本的支持和@Configuration模型。Spring 4.0是最新的主要版本,并且首次完全支持Java 8的特性。Spring 5.0目前还在计划开发中,预计今年即将发布。

声明:

本文介绍纯属个人观点,如果不对的地方欢迎批评指正,让我们共同进步,朝着正确的方向前进。如果您喜欢本文请关注下面公众账号获取最新文章,您的支持是我前行的动力。

© 著作权归作者所有

共有 人打赏支持
宋建国
粉丝 13
博文 127
码字总数 14847
作品 0
闸北
私信 提问
新书上架:《Spring Boot 开发实战》基于 Kotlin + Gradle + Spring Boot 2.0 的企业级服务端开发实战

新书上架:《Spring Boot 开发实战》 — 基于 Kotlin + Gradle + Spring Boot 2.0 的企业级服务端开发实战 京东下单链接 https://item.jd.com/31178320122.html 天猫下单链接 https://detail...

程序员诗人
08/22
0
0
新书上架:《Spring Boot 开发实战》(基于 Kotlin + Gradle + Spring Boot 2.0 的企业级服务端开发实战)

新书上架:《Spring Boot 开发实战》 — 基于 Kotlin + Gradle + Spring Boot 2.0 的企业级服务端开发实战 京东下单链接 https://item.jd.com/31178320122.html 天猫下单链接 https://detail...

程序员诗人
08/05
0
0
吐血整理 20 道 Spring Boot 面试题,我经常拿来面试别人!

面试了一些人,简历上都说自己熟悉 Spring Boot, 或者说正在学习 Spring Boot,一问他们时,都只停留在简单的使用阶段,很多东西都不清楚,也让我对面试者大失所望。 下面,我给大家总结下有...

Java技术栈
10/15
0
0
【Spring Boot 实战开发】第3讲 Kotlin扩展函数

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。在 Java 开发领域的诸多著名框架:Spring 框架及其衍生框架、做缓存Redis、消息...

程序员诗人
04/20
0
0
【Spring Boot 开发实战】第3讲 Kotlin扩展函数

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。在 Java 开发领域的诸多著名框架:Spring 框架及其衍生框架、做缓存Redis、消息...

程序员诗人
04/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Pycharm上Django的使用 Day8

1.添加新条目 1>编写用于添加新条目的表单 在forms.py中创建一个与模型Entry相关联的表单 1处给字段'text'指定一个空标签 2处定义小部件widgets,widgets是一个HTML表单元素 2>定义new_entry...

不会TC的猫
35分钟前
3
0
MongoDB副本集

MongoDB介绍 早期版本使用master-slave,一主一从和MySQL类似,但slave在此架构中为只读,当主库宕机后,从库不能自动切换为主 目前已经淘汰master-slave模式,改为副本集,这种模式下有一个...

chencheng-linux
48分钟前
1
0
WebService 客户端记录

https://blog.csdn.net/qiuhan/article/details/49487009

呼呼南风
48分钟前
1
0
七牛云彭垚:智能平台的创新和发展

2018 年 11 月 14 日至 11 月 18 日,第二十届中国国际高新技术成果交易会(简称高交会)在深圳成功举办,七牛云作为国内领先的以数据智能和视觉智能为核心的企业级云计算服务商受邀参展。 ...

七牛云
55分钟前
1
0
Java内存模型原理,你真的理解透彻了吗?

内存模型产生背景 在介绍 Java 内存模型之前,我们先了解一下物理计算机中的并发问题,理解这些问题可以搞清楚内存模型产生的背景。 物理机遇到的并发问题与虚拟机中的情况有不少相似之处,物...

小刀爱编程
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部