文章目录

  • 版本历史
    • Spring 3.x
    • Spring 4.x
    • Spring 5.x
  • Spring 4.x 各个子版本特性
    • Spring 4.0.x
    • Spring 4.2.x
    • Spring 4.3.x
  • Spring 4.x 最新特性
    • 核心容器改进
    • 数据访问改进
    • 缓存改进
    • JMS 改进
    • Web 改进
    • WebSocket 消息改进
    • 测试改进
    • 支持新的类库和服务器

版本历史

Spring官网:https://spring.io/

Spring从1.0开始,至今已经更新到5.x版本。

Spring 3.x

2009年。
这是基于Java5的第一个版本,旨在充分利用Java5的功能。

Spring 4.x

2013年。
第一个完全支持Java 8的版本。

Spring 5.x

2017年。
整个框架代码都基于Java 8,并且自2016年7月起与Java 9完全兼容。

Spring 4.x 各个子版本特性

Spring 4.0.x

  1. 通过 www.spring.io/guides 网站上的一系列入门指南提高了入门体验。
  2. 从先前的Spring 3 版本中删除弃用的软件包和方法。
  3. 支持Java8,将最低Java版本提高到6 update 18。
  4. Java EE6 及以上版本现在被认为是Spring Framework 4.0的基准。
  5. Groovy bean定义DSL,允许通过Goovy语法配置bean定义。
  6. 核心容器、测试和一般web改进。
  7. WebSocket、SocJS、和STOMP消息。

Spring 4.2.x

  1. 核心改进(例如,引入@AliaFor,并修改现有的注解以使用它)。
  2. 全面支持Hibernate ORM 5.0。
  3. JMS和Web改进。
  4. 对WebSocket消息传递的改进。
  5. 测试改进,最引人注目的是引入了@Commit来替换@Rollback(false),并引入AopTestUtils使用工具类,允许访问隐藏在Spring代理后面的底层对象。

Spring 4.3.x

  1. 完善了编程模型。
  2. 在核心容器(包含ASM 5.1、CGLIB 3.2.4以及spring-core.jar中的Objenesis 2.4)和MVC方面有了相当大的改进。
  3. 添加了组合注解。
  4. Spring TestContext Framework需要JUnit 4.12或更高版本。
  5. 支持新的库,包括Hibernate ORM 5.2、Hibernate Validator 5.3、Tomcat 8.5和9.0、Jackson 2.8等。

Spring 4.x 最新特性

核心容器改进

  1. 核心容器额外提供了更丰富的元数据来改进编程。
  2. 默认 Java 8 的方法检测为 bean 属性的 getter/setter 方法。
  3. 如果目标 bean 只定义了一个构造函数,则它无需要指定@Autowired注解
  4. @Configuration类支持构造函数注入。
  5. 任何 SpEL 表达式用于指定@EventListener的 condition 引用到 bean(例如@beanName.method())。
  6. 组成注解现在可以用一个包含元注解中的数组属性的数组组件类型的元素来覆盖。例如,@RequestMapping的的String[] path 可以在组成注解用 String path 覆盖。
  7. @Scheduled和@Schedules现在是作为元注解用来通过属性覆盖来创建自定义的组成注解。
  8. @Scheduled适当支持任何范围内的 bean。

数据访问改进

jdbc:initialize-database 和 jdbc:embedded-database 支持可配置的分离器被应用到每个脚本。

缓存改进

  1. 允许在一个给定的 key 并发调用时实现同步,使得相应的值只计算一次。这是一个可选的功能,通过设置@Cacheable的新的 sync 属性来启用。
  2. SpEL 表达式对于缓存相关的注解,现在可以引用 bean(即@beanName.method()))。
  3. ConcurrentMapCacheManager和ConcurrentMapCache现在通过一个新的storeByValue属性支持缓存实体的序列化。 @Cacheable,@CacheEvict,@CachePut和@Caching现在是作为元注解用来通过属性覆盖来创建自定义的组成注解。

JMS 改进

  1. @SendTo现在可以在类级别指定一个共同回复目标。
  2. @JmsListener 和 @JmsListeners现在是作为元注解用来通过属性覆盖来创建自定义的组成注解。

Web 改进

  1. 内建支持 HTTP HEAD 和 HTTP OPTIONS。
  2. 新的组合注解 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, 和 @PatchMapping 用于 @RequestMapping。
  3. @RequestScope, @SessionScope, 和 @ApplicationScope用于 web 范围的组合注解。
  4. 新的 @RestControllerAdvice 注解是 @ControllerAdvice 和 @ResponseBody 的语义结合。
  5. @ResponseStatus现在在类级别被支持,并被所有方法继承。
  6. 新的 @SessionAttribute 注解用于访问 session 属性。
  7. 新的 @RequestAttribute 注解用于访问请求属性。
  8. @ModelAttribute 允许通过 binding=false 来避免数据绑定。
  9. 错误和自定义抛出,将被统一到 MVC 异常处理器中处理。
  10. HTTP 消息转换编码一致处理,包括默认 UTF-8 用于多部分文本内容。
  11. 静态资源处理使用配置的ContentNegotiationManager用于媒体类型计算。
  12. RestTemplate 和 AsyncRestTemplate 支持通过DefaultUriTemplateHandler 来实现严格的URI变量编码。
  13. AsyncRestTemplate支持请求拦截。

WebSocket 消息改进

  1. @SendTo和@SendToUser现在可以在类级被指定为共享共同的目的地。

测试改进

  1. 为了支持 Spring TestContext Framework ,现在需要 JUnit 4.12 或者更高的版本。
  2. 新的SpringRunner 关联于 SpringJUnit4ClassRunner。
  3. 测试相关的注解,现在可以在接口上声明了。例如,基于 Java 8 的接口上使用测试接口。
  4. 空声明的 @ContextConfiguration 现在将会完全忽略,如果检测到默认的 XML 文件, Groovy 脚本, 或 @Configuration 类型。
  5. @Transactional 测试方法不再需要public (如, 在 TestNG 和 JUnit 5)。
  6. @BeforeTransaction 和 @AfterTransaction不再需要public,并且在基于 Java 8 的接口的默认方法上声明。
  7. 在Spring TestContext Framework 的ApplicationContext的缓存现在有界为32默认最大规模和最近最少使用驱逐策略。最大的大小可以通过设置称为spring.test.context.cache.maxSize 一个 JVM 系统属性或 Spring 配置。
  8. ContextCustomizer API 用于自定义测试 ApplicationContext 在 bean 定义加载到上下文后但在上下文被刷新前。定制工具可以在全球范围由第三方进行注册,而无需要实现一个自定义的 ContextLoader。
  9. @Sql 和 @SqlGroup 现在作为元注解通过覆盖属性来创建自定义组合注解。
  10. ReflectionTestUtils现在在 set 或 get 一个字段时,会自动解开代理。
  11. 服务器端的 Spring MVC 测试支持具有多个值的响应头。
  12. 服务器端的 Spring MVC 测试解析表单数据的请求内容和填充请求参数。
  13. 服务器端的 Spring MVC 测试支持 mock 式的断言来调用处理程序方法。
  14. 客户端 REST 测试支持允许指定多少次预期的请求以及期望的声明顺序是否应该被忽略。
  15. 客户端 REST 测试支持请求主体表单数据的预期。

支持新的类库和服务器

  1. Hibernate ORM 5.2 (同样很好的支持 4.2/4.3 和 5.0/5.1,不推荐 3.6 )
  2. Jackson 2.8 (在Spring 4.3,最低至 Jackson 2.6+ )
  3. OkHttp 3.x (仍然并行支持 OkHttp 2.x)
  4. Netty 4.1
  5. Undertow 1.4
  6. Tomcat 8.5.2 以及 9.0 M6

Spring 4.x版本新特性相关推荐

  1. Spring Boot 2.0 新特性(二):新增事件ApplicationStartedEvent

    今天继续来聊Spring Boot 2.0的新特性.本文将具体说说2.0版本中的事件模型,尤其是新增的事件: ApplicationStartedEvent. 原文首发:http://blog.did ...

  2. Spring 2.5:Spring MVC中的新特性

    转载说明:infoQ就是牛人多,看人家去年就把Spring2.5注视驱动的MVC写出来了,还是这么详细,我真是自叹不如,今天偶尔看到这篇文章非常认真的拜读了2遍,简直是茅厕顿开啊....\(^o^)/ ...

  3. Spring Boot 2.0 新特性(一):配置绑定 2.0 全解析

    在Spring Boot 2.0中推出了Relaxed Binding 2.0,对原有的属性绑定功能做了非常多的改进以帮助我们更容易的在Spring应用中加载和读取配置信息.下面本文就来说说Sprin ...

  4. Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结...

    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结 1.1. Java的编年史2 ...

  5. iOS基础:新浪微博授权机制、 版本新特性

    文章目录 前言 1. 版本新特性 II. 新浪微博授权机制 2. 1.http://open.weibo.com/wiki/微博API 前言 新浪微博分享SDK 1. 版本新特性 HWNewFeatu ...

  6. React16、17、18版本新特性

    react-16版本新特性 一.hooks import { useState } from 'react'function App() {// 参数:状态初始值比如,传入 0 表示该状态的初始值为 ...

  7. Spark 3.2.0 版本新特性 push-based shuffle 论文详解(一)概要和介绍

    前言 本文隶属于专栏<大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 目录 Spark 3.2.0 ...

  8. Go 1.18 版本新特性详解!

    导语 | 本文推选自腾讯云开发者社区-[技思广益 · 腾讯技术人原创集]专栏.该专栏是腾讯云开发者社区为腾讯技术人与广泛开发者打造的分享交流窗口.栏目邀约腾讯技术人分享原创的技术积淀,与广泛开发者互启 ...

  9. Android Q(10.0 API29)版本新特性和兼容性适配

    摘要 1.本文档基于谷歌AndroidQ官方文档和一加Q版本应用兼容性整改指导 2.本文档主要对影响比较大的部分进行简单总结,内容并不全面: 3.版本号对应关系: Android-Q = Androi ...

最新文章

  1. 三、Bean的初始化
  2. Panabit安装测试小结
  3. JPEG压缩matlab实现
  4. SP1026 FAVDICE - Favorite Dice 期望dp
  5. Linux 查看磁盘空间实现代码介绍
  6. Bootstrap分页传值问题
  7. Java 项目中一种简单的动态修改配置即时生效的方式 WatchService
  8. python 自动复制分类_leetcode python 常见分类问题模板(复制粘贴就能用) 更新中......
  9. 鸿蒙会取代emui,华为称自家手机运行鸿蒙系统正在推进 未来会取代安卓吗?
  10. python是开源的.它可以被移植_python是开源的,它可以被移植到许多平台上,是对的吗?...
  11. weex 项目开发(五)自定义 过滤函数 和 混合 及 自定义 Header 组件
  12. CodeProject是个好地方
  13. AE插件/Trapcode Suite安装错误/error
  14. Java菜鸟入坑——字符串中输出数字
  15. python django项目创建步骤
  16. Elasticsearch 基本查询,term,match,
  17. CF 1383/1384
  18. 我要多开梦幻手游PC端(梦幻手游PC端多开的简单分析及实现办法)
  19. JAVA在线小说电子书阅读系统毕业设计 开题报告
  20. Python Scapy发送数据包

热门文章

  1. Cookies或Session的区别
  2. 李开复给中国大学生的第五封信---你有选择的权利
  3. jqgrid 列的合并
  4. 国产软件企业期待化茧成蝶:标准是利益纽带
  5. SVG_32_月儿弯弯变正圆
  6. phalapi使用redis做MQ队列
  7. 浅谈数商云S2B2C商城系统业务一体化管理功能在医疗器械行业的应用
  8. linux中access数据库操作,Access数据库及其基本操作(转)
  9. Hololens 2拍摄视频并同步记录眼镜参数的C#脚本
  10. 初识Chrome Performance