Spring各版本新特性
1.Spring3.1新特性
http://blog.csdn.net/en_joker/article/details/78538904?locationNum=5&fps=1
(1)功能升级:
- 添加了引入环境profile功能
SpringMVC:https://www.cnblogs.com/strugglion/p/7091021.html
SpringMVC和SpringBoot:http://blog.csdn.net/wu6660563/article/details/54616036 - 添加了@enable注解,使用特定功能
http://blog.csdn.net/qq_26525215/article/details/53524844
http://blog.csdn.net/xichenguan/article/details/73478873(实现详解,自定义Enable类注解可参考) - 添加了对声明式缓存的支持,能够使用简单的注解声明缓存边界和规则
- 添加的用于构造器注入的c命名空间,类似与Spring2的p命名空间,用于对应属性注入
- 开始支持Servlet3.0,包括基于java配置中生命Servlet和Filter,不再只仅仅借助web.xml
https://www.cnblogs.com/panxuejun/p/7090919.html - 改善对于JPA的支持,让JPA能在Spring中完整配置JPA,不必再使用persistence.xml文件
(2)SpringMVC功能增强:
- 自动绑定路径变量到模型属性中
https://www.cnblogs.com/Jsonlu/p/4849183.html(更详细,尝试新的路径定义时可参考)
http://blog.csdn.net/scplove/article/details/52294958(个注解简单解析) - 提供了@RequestMappingProduces和consumes属性,用于匹配请求中的Accept和Content-Type头部信息
https://www.cnblogs.com/qq78292959/p/3760560.html 提供了@RequestPart注解,用于将Multipart请求中的而某些部分绑定到处理器的方法参数中
与传统方法比较:http://shmilyaw-hotmail-com.iteye.com/blog/2244896
使用时的问题:http://blog.csdn.net/hankai945/article/details/50570217支持Flash属性,在redirect请求后依然能够存活的属性,flash属性的RedirectAttribute类型
(3)不再支持的功能:
- 为支持原生的EntityManager,Spring的JpaTemplate和JpaDaoSupport类已被废弃了来支持JPA 2.0,并在spring4中移除了
2.Spring3.2新特性
(1)SpringMVC功能增强:
- 可以使用Servlet3.0的异步请求,允许一个独立的线程中处理请求
Spring3的Controller单例但是多线程:http://blog.csdn.net/darkdragonking/article/details/52367186 - 引入了SpringMVC测试框架,用于为控制器编写更丰富测试,断言他们作为控制器行为是否正确,而且在使用过程不需要Servlet容器
- @ControllerAdvice注解能将通用的@ExceptionHandler、@InitBinder和@ModelAttributes方法收集到一个类中,并应用到所有的控制器上
- Spring MVC 3.2包含了一个新的@MatrixVariable注解,这个注解能够将请求中的矩阵变量(matrix variable)绑定到处理器的方法参数中
@MatrixVariable使用:http://blog.csdn.net/csdnfanguyinheng/article/details/51586633 - 基础的抽象类AbstractDispatcherServletInitializer能够非常便利地配置DispatcherServlet,而不必再使用web.xml。与之类似,当你希望通过基于Java的方式来配置Spring的时候,可以使用Abstract-AnnotationConfigDispatcherServletInitializer的子类
详细案例与demo:http://blog.csdn.net/u012160163/article/details/78806659 - 新增了ResponseEntityExceptionHandler,可来替代Default-HandlerExceptionResolver,ResponseEntityExceptionHandler方法会返回ResponseEntity,而不是ModelAndView
- RestTemplate和@RequestBody的参数可支持泛型
- RestTemplate和@RequestMapping可支持Http的PATCH方法
(2)非MVC功能的改善:
- @Autowired、@Value和@Bean注解能够作为元注解,用于创建自定义的注入和bean声明注解
- @DateTimeFormat注解不再强依赖JodaTime
- Spring的声明式缓存提供了JCache0.5的支持
- 支持定义全局的格式来解析和渲染日期与时间
常用全局格式化时间方法:https://www.cnblogs.com/zhanghongbo19870214/p/6555339.html
Spring3配置全局时间格式化:http://blog.csdn.net/chenleixing/article/details/45156617 - 集成测试中能够配合和加载WebApplicationContext
- 在集成测试中你能够针对requesthesession作用于的bean进行测试
3.Spring4.0新特性
(http://jinnianshilongnian.iteye.com/blog/1994164)
提供了对WebSocket编程的支持
添加了新的消息模块,SpringIntegration项目
第一批支持java8特性的框架(支持lambda表达式)
支持JSR-310,Date与TimeAPI,提供比java.util.Date,java.util.Calendar更丰富便捷的时间API
为Groovy开发的应用程序提供了更加顺便的编程体验,尤其是支持非常便利的完全采用Groovy开发的Spring应用程序
添加了条件化创建Bean的功能(@Condition: http://blog.csdn.net/L_Sail/article/details/71076251)
Spring4包含了Spring RestTemplate的一个新的一步实现,他会立即返回并且允许在操作完成后执行回调
添加了对多想JEE规范的支持,包括JMS2.0、JTA1.2/JPA2.1和BeanValidation1.1(http://jinnianshilongnian.iteye.com/blog/1733708)
本博客是阅读《Spring实战(第4版)》的笔记和阅读中搜集到的优秀博客推荐