前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Spring敲门砖之基础教程第一季》 第一章(3) Spring 框架历史及新功能介绍

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

作者头像
用户1257215
发布2018-01-30 10:59:01
7700
发布2018-01-30 10:59:01
举报
文章被收录于专栏:架构师之旅架构师之旅

回顾

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

声明:

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring框架的历史
    • 1.1 Spring 1.0
      • 1.2 Spring 1.0 版本特性
      • Spring新特性
        • 1 Spring 2.5新特性
          • 2 Spring 3.0新特性
            • 3 Spring 4.0新特性
              • 4 Spring 5.0新特性
              • 总结
              • 声明:
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档