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

回顾

上一节,我们简单介绍了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目前还在计划开发中,预计今年即将发布。

声明:

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

原文发布于微信公众号 - 架构师之旅(TravelWithFrame)

原文发表时间:2016-08-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏闻道于事

Spring技术内幕:设计理念和整体架构概述

2603
来自专栏Web项目聚集地

从零学习Spring(一)

今天我们便踏上Spring框架的学习之路,熟悉此公众号的读者知道,公众号正在连载关于MyBatis,Spring MVC,Spring Boot框架的教程。如果...

4221
来自专栏IT进修之路

原 荐 SpringCloud2.0 Eur

3493
来自专栏琯琯博客

awesome-java-cn

Java 资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、Java 站点等等。 古董级工具 这些工具伴随着Java一起出...

6688
来自专栏微信公众号:Java团长

Java开发必须要知道的知识体系

Java是超高人气编程语言,拥有跨平台、面向对象、泛型编程等特性。在TIOBE编程语言排行榜中,连续夺得第一宝座,而且国内各大知名互联网公司,后端开发首选语言:...

1782
来自专栏架构师之旅

《Spring敲门砖之基础教程第一季》 第一章(2)解读Spring Framework

系统架构 一个成功的项目离不开一个好的架构,一个好的架构自然需要一位好的设计师, Rod Johnson正是Spring的前生总架构设计师,那...

1976
来自专栏猿天地

Spring Cloud Eureka 初探

Eureka介绍 Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分,基于 Netflix Eureka ...

3607
来自专栏全华班

Activiti与JBPM概念和差异(整理和汇总)

导读 | Activiti VS JBPM Activiti概念 一、Activiti特点 1、数据持久化 activiti 设计思想:简洁、快速。使用my...

1.1K10
来自专栏区块链

最好用的开源Web漏洞扫描工具梳理

来自FreeBuf.COM *参考来源:geekflare,FB小编柚子编译 链接:www.freebuf.com/articles/web/155209.ht...

5.3K8
来自专栏chenssy

【死磕Netty】-----Netty的核心组件

原文出处http://cmsblogs.com/ 『chenssy』 转载请注明原创出处,谢谢! 在第一篇博客中(【死磕Netty】-----NIO基础详解),...

5745

扫码关注云+社区

领取腾讯云代金券