Spring 4.3 的新功能和增强

   2016-07-13 0

  摘要

  本文介绍了 Spring 4.3 的新功能和增强的特性。

 核心容器改进

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

 数据访问改进

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

 缓存改进

  Spring 4.3 允许在一个给定的 key 并发调用时实现要同步,使得相应的值只计算一次。这是一个可选的功能,通过设置@Cacheable的新的 sync 属性来启用。此功能引入了Cache接口的一个重大更改,即get(Object key, Callable<T> valueLoader)方法已添加。

  Spring 4.3 还改进了缓存抽象如下:

  • SpEL 表达式对于缓存相关的注解,现在可以引用 bean(即@beanName.method()))。
  • ConcurrentMapCacheManager和ConcurrentMapCache现在通过一个新的storeByValue属性支持缓存实体的序列化。 @Cacheable,@CacheEvict,@CachePut和@Caching现在是作为元注解用来通过属性覆盖来创建自定义的组成注解。

 JMS 改进

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

 Web 改进

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

 WebSocket 消息改进

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

 测试改进

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

 支持新的类库和服务器

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

 参考引用

 
标签: Spring
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Springboot + mybatis + React+redux+React-rou
    前言:            后台搭建完以后开始搭建前端,使用create-react-app搭建项目非常方便。           前端主要是如何向后台请求数据,以及如何使用redux管理state,路由的配置.           前端github地址:  https://github.com
    02-09
  • 这个Spring Security登录插件牛啊,验证码、小程序、OAuth2都能快速接入
    这个Spring Security登录插件牛啊,验证码、小
    上次我们把验证码登录、小程序登录优雅地集成到了Spring Security,很多同学大呼过瘾,相比较一些传统玩法高级了很多。胖哥就赶紧抓住机会举一反三,把几个非标准的OAuth2也接入了进来,主要是微信、企业微信,做到应接尽接。只需要通过下面几行简单的代码就
    02-09 java
  • 微信小程序获取openId  SpringBoot
    微信小程序获取openId SpringBoot
    官方文档wx.login:【穿梭门】https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.htmlauth.code2Session【穿梭门】https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html案例小
    02-09
  • 微信小程序 springboot nginx 做图片存储 上传
    微信小程序前端-springboot后端-nginx图片存储前言本人小白一名,这是第一次学习微信小程序,特此做个记录。首先准备nginx做图片存储选择一个地址存放图片#我的地址[root@VM_0_16_centos images]# pwd/home/photos/images[root@VM_0_16_centos images]#然后配
    02-09
  • Ruby中文乱码问题 springmvc中文乱码
    中文乱码问题解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*-(EMAC写法) 或者 #coding=utf-8 就行了。源代码文件中,若包含中文编码,则需要注意两点:1. 必须在首行添加 # -*- coding: UTF-8 -*-,告诉解释器使用utf-8来解析源码。2. 必须设置编
    02-09
  • SpringBoot + nodeJS + zookeeper 搭建微服务示
    总体来说该项目由服务注册 + 服务发现 + 服务代理 + 服务调用四部分组成。使用java客户的开发服务注册组件,它是整个微服务架构中的服务注册表,使用Node.js客户端开发服务发现组件,它用于在服务注册表中根据具体的服务名称获取对应的服务配置。  由项目1
    02-09
  • Spring注解与P/C命名空间超详细解析
    目录注解实现自动装配@Autowire注解@Qualifier注解@Resource注解@Component@Scope@ComponentScan@Bean@Configuration@ValueP命名空间注入C命名空间注入Spring开发包名解释Java方式配置注解实现自动装配@Autowire注解@Autowire注解,自动装配通过类型,名字如
  • SpringBoot使用过滤器、拦截器和监听器的案例代
    目录SpringBoot使用过滤器、拦截器和监听器一、SpringBoot使用过滤器Spring boot过滤器的使用(两种方式)方式一:方式二:二、SpringBoot使用拦截器三、过滤器和拦截器的执行顺序四、SpringBoot使用监听器1、统计网站最多在线人数监听器的例子2、springboot
  • 一个C#开发者学习SpringCloud搭建微服务的心路历程
    一个C#开发者学习SpringCloud搭建微服务的心路
    前言Spring Cloud很火,很多文章都有介绍如何使用,但对于我这种初学者,我需要从创建项目开始学起,所以这些文章对于我的启蒙,帮助不大,所以只好自己写一篇文章,用于备忘。SpringCloud是封装了Netflix公司开发的Eureka模块来实现服务注册和发现。下图为Sp
    02-09
  • 微信小程序 部署(后台是springboot项目  前后台分离)
    微信小程序 部署(后台是springboot项目 前后
     微信小程序的部署需要https 和证书:   https 需要反向代理:   这里用 nginx,无论linux,windows 系统都可以安装:1.安装nginx ,这步自己去做;   linux 安装nginx 可以使用宝塔,或自己下载安装;2.配置nginx,把证书放在nginx安装目录conf 文件
    02-09
点击排行