4. Spring Framework 4.1中的新功能和增强功能

4.1版包含了许多改进,如以下部分所述:

4.1 JMS改进

Spring 4.1通过使用 @JmsListener 注释bean方法引入了一个更简单的基础结构 to register JMS listener endpoints 。 XML命名空间已得到增强,可支持这种新样式( jms:annotation-driven ),也可以使用Java配置( @EnableJmsJmsListenerContainerFactory )完全配置基础结构。也可以使用 JmsListenerConfigurer 以编程方式注册侦听器 endpoints 。

Spring 4.1还调整了JMS支持,使您可以从4.0中引入的 spring-messaging 抽象中受益,即:

  • 消息侦听器 endpoints 可以具有更灵活的签名,并从标准消息传递注释中受益,例如 @Payload@Header@Headers@SendTo 。也可以使用标准 Message 代替 javax.jms.Message 作为方法参数。

  • 新的 JmsMessageOperations 接口可用,并允许 JmsTemplate 类似于使用 Message 抽象的操作。

最后,Spring 4.1提供了额外的其他改进:

  • JmsTemplate 中的同步请求 - 回复操作支持

  • 可以根据 <jms:listener/> 元素指定监听器优先级

  • 消息侦听器容器的恢复选项可使用 BackOff 实现进行配置

  • 支持JMS 2.0共享使用者

4.2 缓存改进

Spring 4.1使用Spring现有的缓存配置和基础架构抽象支持 JCache (JSR-107) annotations ;使用标准注释不需要进行任何更改。

Spring 4.1还显着改进了自己的缓存抽象:

  • 可以使用 CacheResolver 在运行时解析高速缓存。因此,定义要使用的缓存名称的 value 参数不再是必需的。

  • 更多操作级别自定义:缓存解析程序,缓存管理器,密钥生成器

  • 新的 @CacheConfig class-level annotation 允许在类级别共享公共设置 without ,从而启用任何缓存操作。

  • 使用 CacheErrorHandler 更好地处理缓存方法

随着新的 putIfAbsent 方法的添加,Spring 4.1在 Cache 界面中也发生了重大变化。

4.3 网站改进

  • 基于 ResourceHttpRequestHandler 的现有资源处理支持已经扩展了新的抽象 ResourceResolverResourceTransformerResourceUrlProvider 。许多内置实现提供对版本化资源URL的支持(用于有效的HTTP缓存),定位gzip压缩资源,生成HTML 5 AppCache清单等。见 Section 22.16.9, “Serving of Resources”

  • JDK 1.8的 java.util.Optional 现在支持 @RequestParam@RequestHeader@MatrixVariable 控制器方法参数。
    支持

  • ListenableFuture 作为 DeferredResult 的返回值替代,其中基础服务(或者可能是对 AsyncRestTemplate 的调用)已经返回 ListenableFuture

  • @ModelAttribute 方法现在以遵循相互依赖关系的顺序调用。见 SPR-6299

  • Jackson的 @JsonView 直接支持 @ResponseBodyResponseEntity 控制器方法,用于序列化同一POJO的不同数量的详细信息(例如摘要与详细信息页面)。通过在特殊键下添加序列化视图类型作为模型属性,基于视图的渲染也支持此功能。有关详细信息,请参阅 the section called “Jackson Serialization View Support”
    Jackson 现在支持

  • JSONP。见 the section called “Jackson JSONP Support”

  • 新的生命周期选项可用于在控制器方法返回之后和写入响应之前拦截 @ResponseBodyResponseEntity 方法。利用声明一个实现 ResponseBodyAdvice@ControllerAdvice bean。对 @JsonView 和JSONP的内置支持利用了这一点。见 Section 22.4.1, “Intercepting requests with a HandlerInterceptor”

  • 有三个新的 HttpMessageConverter 选项:

  • Gson - 比 Jackson 更轻;已经在Spring Android中使用。

  • Google协议缓冲区 - 作为企业内的服务间通信数据协议高效且有效,但也可以作为浏览器的JSON和XML公开。

  • 现在通过 jackson-dataformat-xml 扩展支持基于Jackson的XML序列化。使用 @EnableWebMvc<mvc:annotation-driven/> 时,如果 jackson-dataformat-xml 在类路径中,则默认使用此选项而不是JAXB2。

  • 诸如JSP之类的视图现在可以通过按名称引用控制器映射来构建到控制器的链接。每个 @RequestMapping 都分配了一个默认名称。例如,带有方法 handleFooFooController 被命名为 "FC#handleFoo" 。命名策略是可插拔的。也可以通过其name属性明确命名 @RequestMapping 。 Spring JSP标记库中的一个新的 mvcUrl 函数使它易于在JSP页面中使用。见 Section 22.7.3, “Building URIs to Controllers and methods from views”

  • ResponseEntity 提供了一种构建器式API,用于指导控制器方法准备服务器端响应,例如, ResponseEntity.ok()

  • RequestEntity 是一种新类型,它提供构建器样式的API,以指导客户端REST代码准备HTTP请求。

  • MVC Java配置和XML命名空间:

  • 现在可以配置视图解析器,包括支持内容协商,请参阅 Section 22.16.8, “View Resolvers”

  • View控制器现在具有内置的重定向支持和设置响应状态。应用程序可以使用它来配置重定向URL,使用视图呈现404响应,发送 "no content" 响应等。某些用例是 listed here

  • 路径匹配自定义项经常使用,现在已内置。见 Section 22.16.11, “Path Matching”

  • Groovy markup template 支持(基于Groovy 2.3)。请参阅 GroovyMarkupConfigurer 和respecitve ViewResolver 和`View'实现。

4.4 WebSocket消息传递改进

  • SockJS(Java)客户端支持。请参阅 SockJsClient 和同一包中的类。

  • 当STOMP客户端订阅和取消订阅时发布新的应用程序上下文事件 SessionSubscribeEventSessionUnsubscribeEvent

  • 新 "websocket" 范围。见 Section 26.4.16, “WebSocket Scope”

  • @SendToUser 只能定位一个会话,不需要经过身份验证的用户。

  • @MessageMapping 方法可以使用点 "." 而不是斜杠 "/" 作为路径分隔符。见 SPR-11660

  • 收集并记录了STOMP / WebSocket监控信息。见 Section 26.4.18, “Monitoring”

  • 显着优化和改进的日志记录,即使在DEBUG级别也应保持非常可读和紧凑。

  • 优化的消息创建,包括支持临时消息可变性和避免自动消息ID和时间戳创建。参见 MessageHeaderAccessor 的Javadoc。

  • 关闭在 Build WebSocket会话后60秒内没有活动的STOMP / WebSocket连接。见 SPR-11884

4.5 测试改进

Updated at: 5 months ago
3.9. 测试改进Table of content5. Spring Framework 4.2中的新功能和增强功能
Comment
You are not logged in.

There are no comments.