第4章 Spring 4.0增强和新功能 II -- Spring4.3.8参考文档中文版

4 Spring 4.1增强和新功能 II

@sunRainAmazing

4.1 JMS改进

Spring 4.1引入了一个更简单的基础架构,使用@JmsListener注解bean方法来注册JMS监听端点 .XML命名空间已经通过增强来支持这种新的方式(jms:annotation-driven),它也可以完全通过Java配置(@EnableJms, JmsListenerContainerFactory)来配置架构。可以也。使用JmsListenerConfigurer注解来注册监听端点。
Spring 4.1还调整了JMS的支持,使得你可以从spring-messaging在Spring4.0引入的抽象获益,即:
消息监听端点可以有更为灵活的签名,并且可以从标准的消息注解获益,例如@Payload,@Header,@Headers状语从句:@SendTo注解。另外,也可以使用一个标准的消息,代替以javax.jms.Message作为方法参数。

新一个可用的JmsMessageOperations接口状语从句:网求允许操作使用Message抽象艺术的JmsTemplate。

最后,Spring 4.1提供了其他各种各样的改进:
1、 在JmsTemplate中的同步请求 - 答复操作支持
2、 器监听的优先权可以指定每个元素
3、 侦听消息器容器恢复选项对话可以通过使用BackOff实现进行配置
4、 JMS 2.0消费者支持共享

4.2缓存(缓存)改进

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

Spring 4.1也大大提高了自己的缓存抽象:
可以缓存在运行时使用CacheResolver解决。因此使用value参数定义的缓存名称不在的英文强制性的。

更多的操作级自定义项:缓存解析器,缓存管理器,键值生成器
新一个的@CacheConfig类级别注解网求允许在类级别上共享常用配置,不需要启用任何缓存操作。
使用CacheErrorHandler更好的处理缓存方法的异常
Spring 4.1为了在CacheInterface添加一个新的putIfAbsent方法也做了重大的更改。

4.3 Web改进

基础上,对资源处理现有的支持ResourceHttpRequestHandler 已经扩展了与新的抽象ResourceResolver,ResourceTransformer和ResourceUrlProvider。
许多内置的实现提供对版本化的资源URL的支持(用于有效的HTTP缓存),查找gzip压缩的资源,生成HTML 5 AppCache清单等等。见第16.16.7节”资源的服务”。

JDK 1.8的java.util.Optional现在支持@RequestParam,@RequestHeader以及@MatrixVariable控制方法的参数。
ListenableFuture被支持作为返回值替代DeferredResult 基础服务(或可能调用AsyncRestTemplate)已经返回的地方ListenableFuture。

@ModelAttribute方法现在按照相互依赖关系的顺序进行调用。见SPR-6299。
@JsonView直接支持 Jackson@ResponseBody和ResponseEntity 控制器方法,用于序列化同一POJO的不同数量的细节(例如摘要与详细页面)。
通过将序列化视图类型添加为特殊键下的模型属性,也支持基于视图的渲染。有关详细信息,请参阅”支持Jackson序列化视图”一节。
Jackson现在支持JSONP。请参阅”支持JacksonJSONP”一节。

在控制器方法返回之后和写入响应之前, 新的生命周期选项可用于拦截@ResponseBody和ResponseEntity方法。利用声明一个@ControllerAdvice实现的beanResponseBodyAdvice。内置的@JsonViewJSONP 支持可以利用这一点。请参见第16.4.1节”使用HandlerInterceptor拦截请求”。

有三个新HttpMessageConverter选项:
1、Gson - 比Jackson更轻的足迹; 已经在Spring Android中使用过。
2、Google协议缓冲器 - 作为企业内部的服务间通信数据协议而高效且有效,但也可以作为浏览器的JSON和XML公开。
3、通过jackson-dataformat-xml扩展,现在支持基于Jackson的XML序列化 。当使用@EnableWebMvc或,如果该默认使用代替JAXB2jackson-dataformat-xml是在类路径。

视图如JSP现在可以通过名称引用控制器映射来建立到控制器的链接。默认名称分配给每个@RequestMapping。例如FooController ,方法handleFoo名为”FC#handleFoo”。
命名策略是可插拔的。也可以@RequestMapping通过其name属性显式地命名。mvcUrlSpring JSP标记库中的一个新功能使其易于在JSP页面中使用。请参见第16.7.2节”构建控制器的URI和视图中的方法”。

ResponseEntity提供了一个构建器式API来指导控制器方法来准备服务器端响应,例如ResponseEntity.ok()。
RequestEntity 是一种新的类型,它提供了一个构建器样式的API来指导客户端REST代码准备HTTP请求。

MVC Java配置和XML命名空间:
1、现在可以配置视图解析器,包括支持内容协商,请参见第16.16.6节”查看解析器”。
2、View控制器现在具有内置的重定向支持和设置响应状态。应用程序可以使用它来配置重定向网址,以视图呈现404响应,发送”无内容”响应等。此处列出了一些用例 。
3、路径匹配自定义被经常使用,现在内置。参见第16.16.9节”路径匹配”。
Groovy标记模板 支持(基于Groovy 2.3)。查看GroovyMarkupConfigurer和重新分析 ViewResolver和”查看”实现。

4.4 WebSocket STOMP消息改进

SockJS(Java)客户端支持。SockJsClient在同一个包中查看和分类。
新的应用程序上下文事件,SessionSubscribeEvent并SessionUnubscribeEvent在STOMP客户端订阅并取消订阅时发布。
新的”websocket”范围。请参见第20.4.13节”WebSocket范围”。
@SendToUser 可以仅定位一个会话,并且不需要经过身份验证的用户。
@MessageMapping方法可以使用点” . “,而不是斜杠”/”作为路径分隔符。见SPR-11660。
收集并记录了STOMP / WebSocket监控信息。请参见第20.4.15节”运行时监视”。
显着优化和改进的日志记录应该保持非常可读和紧凑,即使在DEBUG级别。
优化的消息创建,包括支持临时消息可变性,并避免自动消息标识和时间戳创建。见Javadoc MessageHeaderAccessor。
建立WebSocket会话60秒后没有活动的STOMP / WebSocket连接。见SPR-11884。

4.5测试改进

现在可以使用Groovy脚本来配置ApplicationContext在TestContext框架中加载的集成测试。
– 有关详细信息,请参阅”使用Groovy脚本的上下文配置”一节。

测试管理的事务现在可以通过新的TestTransactionAPI 以编程方式启动并在事务性测试方法中结束。
– 有关详细信息,请参阅”程序化事务管理”一节。

现在可以通过基于每个类或每个方法的新增@Sql和 @SqlConfig注释声明性地配置SQL脚本执行。
– 有关详细信息,请参阅”执行SQL脚本”一节。

可以通过新的@TestPropertySource注释配置自动覆盖系统和应用程序属性源的测试属性源。
– 有关详细信息,请参阅”具有测试属性源的上下文配置”一节。

TestExecutionListener现在可以自动发现默认值。
– 有关详细信息,请参阅”自动发现默认TestExecutionListeners”一节。

自定义TestExecutionListener现在可以自动与默认监听器合并。
– 有关详细信息,请参阅”合并TestExecutionListeners”一节。

TestContext框架中的事务性测试支持文档已经通过更全面的解释和其他示例进行了改进。
– 有关详细信息,请参阅”事务管理”部分。

各种改进MockServletContext,MockHttpServletRequest以及其他Servlet API的mock。

AssertThrows已被重构支持Throwable而不是Exception。

在Spring MVC测试中,可以使用JSON Assert 作为使用JSONPath的额外选项来声明JSON响应,就像使用XMLUnit可以进行XML一样。

MockMvcBuilder 食谱现在可以在帮助下创建MockMvcConfigurer。这是添加到容易应用Spring Security设置,但可以用于封装任何第三方框架或项目中的通用设置。

MockRestServiceServer现在支持AsyncRestTemplate客户端测试。

猜你喜欢

转载自blog.csdn.net/sunrainamazing/article/details/77170725