文档章节

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

宋建国
 宋建国
发布于 2016/08/14 16:43
字数 2278
阅读 37
收藏 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目前还在计划开发中,预计今年即将发布。

声明:

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

© 著作权归作者所有

共有 人打赏支持
宋建国
粉丝 13
博文 126
码字总数 10019
作品 0
闸北
SpringBoot | 第一章:第一个SpringBoot应用

SpringBoot | 第一章:第一个SpringBoot应用 springboot简单介绍 概述 随着动态语言的流行(Ruby、Groovy、Scala、Node.js),Java的开发显得格外的笨重:繁多的配置、低下的开发效率、复杂的...

oKong
07/15
0
0
【第一章】 Spring概述 ——跟我学Spring3

1.1.1 Spring是什么 Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。...

君辰
2015/07/23
0
0
【第2章 Spring快速入门】2.1 Java应用之HelloWorld

上一节:【第1章 Spring概述与结构】1.2 Spring模块与结构 注意:本系列教程不会通过工程单独依赖某个Jar包,而是通过开源中国的Maven库,来进行Jar包的依赖管理,所以后续的讲解都是以Maven...

陶邦仁
2015/05/24
0
3
Spring Cloud学习:02服务消费者(Ribbon&Feign)

在微服务架构中,业务会拆分成一个独立的服务,服务与服务之间基于http restful进行通信。Spring Cloud有两种服务调用方式,一种是Ribbon+restTemplate,另一种是Feign。 1 Ribbon+restTempl...

寒武没有纪
2017/10/21
0
0
《Spring Security3》第一章第一部分翻译

本文为转载学习 原文链接:http://lengyun3566.iteye.com/blog/1069004 第一章 一个不安全应用的剖析 毫无疑问,安全是任何一个写于21世纪的web工程中最重要的架构组件之一。在这样一个时代,...

heroShane
2014/02/02
0
0
Spring Cloud微服务-全栈技术与案例解析

在互联网时代,互联网产品的最大特点就是需要快速发布新功能,支持高并发和大数据。传统的架构已经慢慢不能支撑互联网业务的发展,这时候微服务架构顺势而出。 最开始国内很多公司都是基于阿...

尹吉欢
前天
0
0
深入浅出Dubbo剖析出视频教程了!!!

深入浅出Dubbo剖析出视频教程了,目前出了Dubbo剖析-基础教程,本课程作为深入浅出Dubbo课程系列的基础篇,内容如下: 第一章 初始Dubbo(免费) 第二章 使用 ZooKeeper 搭建服务治理中心 第...

阿里加多
05/04
0
0
Spring Web Flow 2.0 入门

开始之前 关于本教程 本教程通过一个简化的购物车应用,介绍了如何使用 Spring Web Flow 2.0 来构建 Web 应用程序。本教程以讲解实例为主,为了读者更好地理解 Spring Web Flow ,也有部分理...

ihaolin
2014/02/22
0
0
【视频分享】尚硅谷Java视频教程_RBAC权限实战视频教程

        本视频讲授RBAC权限模型的设计、以及在项目中的应用 。 1. 使用Maven进行项目构建 。 2. 页面设计采用响应式前端框架BootStrap 。 3. 采用多种方式展现用户数据:树形结构(z...

后端编程嘟
05/24
0
0
基于Struts+Spring+Hibernate的使用和部署

就现在WEB开发而言,J2EE企业级开发技术比较成熟,开发模式模式也比较繁多,较流行开发模式MVC更是普遍,而基于MVC模式开发的框架也是种类繁多,现在使用最多的可能就是SSH这三种框架,所以展...

chenruibing
2015/08/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
12
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
2
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
1
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
3
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部