《Spring敲门砖之基础教程第一季》 第一章(3) Spring 框架历史及新功能介绍
《Spring敲门砖之基础教程第一季》 第一章(3) Spring 框架历史及新功能介绍
宋建国 发表于1年前
《Spring敲门砖之基础教程第一季》 第一章(3) Spring 框架历史及新功能介绍
  • 发表于 1年前
  • 阅读 32
  • 收藏 0
  • 点赞 0
  • 评论 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目前还在计划开发中,预计今年即将发布。

声明:

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

共有 人打赏支持
粉丝 14
博文 126
码字总数 10019
×
宋建国
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: