Spring 4.3 的新功能和增强
2016-06-21 08:52
393 查看
摘要: 本文介绍了 Spring 4.3 的新功能和增强的特性。
默认 Java 8 的方法检测为 bean 属性的 getter/setter 方法。
如果目标 bean 只定义了一个构造函数,则它无需要指定
任何 SpEL 表达式用于指定
组成注解现在可以用一个包含元注解中的数组属性的数组组件类型的元素来覆盖。例如,
Spring 4.3 还改进了缓存抽象如下:
SpEL 表达式对于缓存相关的注解,现在可以引用 bean(即
新的组合注解
详见
新的
Request scope, Session scope, 和 Application scope
新的
新的
新的
错误和自定义抛出,将被统一到 MVC 异常处理器中处理
HTTP 消息转换编码一致处理,包括默认 UTF-8 用于多部分文本内容
静态资源处理使用配置的
新的
测试相关的注解,现在可以在接口上声明了。例如,基于 Java 8 的接口上使用测试接口
空声明的
在Spring TestContext Framework 的
服务器端的 Spring MVC 测试支持具有多个值的响应头。
服务器端的 Spring MVC 测试解析表单数据的请求内容和填充请求参数。
服务器端的 Spring MVC 测试支持 mock 式的断言来调用处理程序方法。
客户端 REST 测试支持允许指定多少次预期的请求以及期望的声明顺序是否应该被忽略(参见15.6.3,“客户端REST测试”)。
客户端 REST 测试支持请求主体表单数据的预期。
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
核心容器改进
核心容器额外提供了更丰富的元数据来改进编程。默认 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。
详见
@RequestMapping组合变种
新的
@RequestScope,
@SessionScope, 和
@ApplicationScope用于 web 范围的组合注解
Request scope, Session scope, 和 Application scope
新的
@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 配置。
ContextCustomizerAPI 用于自定义测试
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 Framework 4.x参考文档》相关文章推荐
- java 十进制整数转换为二进制!
- java程序命令行运行——札记
- Spring AOP 实现写事件日志功能
- java web验证码实现代码分享
- spring-security 在jsp中的标签库
- 简单实现Java web服务器
- Java设计模式——代理模式
- Java设计模式——工厂模式
- Java设计模式——单例模式
- kafka集群搭建和使用Java写kafka生产者消费者
- java表达式问题 十六进制的趣事
- Velocity是一个基于java的模板引擎
- java内存分配和垃圾收集
- 服务端接收到客户端发送的文件名,并把文件的内容返回给客户端
- java表达式问题 初级问题
- 生成小学加减口算题JAVA算法
- java表达式问题 长整除
- Struts2系列:(2)Struts2配置文件
- Struts2系列:(1)入门
- 如何在Eclipse中如何自动添加注释和自定义注释风格