使用视图进行内容协商

工程 | Paul Chapman | 2013年6月3日 | ...

在我之前的文章中,我介绍了内容协商的概念以及 Spring MVC 用于确定请求内容的三种策略。

在这篇文章中,我想将这个概念扩展到使用ContentNegotiatingViewResolver(或 CNVR)为不同的内容类型支持多个视图。

快速概述

既然我们已经知道如何从之前的文章中设置内容协商,那么使用它在多个视图之间进行选择非常简单。只需像这样定义一个 CNVR


    <!--
      // View resolver that delegates to other view resolvers based on the
      // content type…

本周 Spring - 2013年5月28日

工程 | Josh Long | 2013年5月29日 | ...

欢迎来到本周 Spring 的另一个版本。如果您错过了上周的内容,大部分SpringOne2GX 2013议程已经发布,所以现在就预订,获得会议和机票的早鸟价!像往常一样,我们本周有很多内容要讲,所以让我们开始吧!

  1. Spring Batch 负责人Michael Minella宣布了Spring Batch 2.2.0 RC2。这个新版本充满了许多很棒的新功能,包括对 Spring Batch Java 配置 API 的支持以及一个Spring Data GemFireItemReaderItemWriter
  2. Gary Russell刚刚宣布了Spring Integration 3.0 里程碑 2。请务必查看新功能并试用一下!
  3. 加入我的网络研讨会,主题是使用 Spring 构建 RESTful 服务 - 2013年6月13日。我将讨论与 REST相关的 OAUTH、Spring MVC 和 Spring HATEOAS。
  4. Rossen Stoyanchev在他的博客中介绍了即将推出的Spring 4 中对 WebSocket 的支持,看起来非常引人注目!
  5. Gary Russell还刚刚宣布了 Spring Integration MQTT扩展适配器,里程碑 1,它使从 Spring Integration 中轻松使用 MQTT(一种适合轻量级消息传递的消息传递技术)成为可能。
  6. Oliver Gierke在 Stack Overflow 上对这个问题写了一个很好的回答:如何将 Spring Data 页面作为 JSON 返回
  7. 本综述的长期读者将了解 Thymeleaf,这是一个为您的 Web 应用程序视图模板注入新活力的模板引擎,并且它与 Spring 配合得非常好。Thymeleaf-testing 的第一个稳定版本 2.0.0刚刚发布
  8. Trifork 博客上的 Joris Kuipers 宣布了一套新的宏,用于使用 Freemarker(一种替代的、非常强大的模板引擎)使用 Spring 应用程序进行表单输入
  9. Oleg Tsal-Tsalko 制作了一个关于 Spring 4 中新功能的演讲。干得好,Oleg!
  10. Johnathan Mark Smith 又回来了,这次他制作了一个关于如何使用 Spring 进行 Java 配置的视频。看看吧
  11. Maciej Walkowiak 写了一篇关于如何使用 Spring Data MongoDB 审核实体的精彩文章。
  12. 名字不太好的 *Java2J2EE* 博客上有一篇很棒的、简短而精彩的文章,介绍了如何使用 Spring 的 Java 配置风格设置 JPA 和 Spring MVC。但是,我不建议用户直接调用 Spring FactoryBean上的生命周期方法,而是选择取消引用配置的结果
    @Bean public EntityManagerFactory emf(){
       LocalContainerEntityManagerFactoryBean lcemfb = ..
       return lcemfb;
    } 
    
    @Bean public PlatformTransactionManager transactionManager(){
      EntityManagerFactory emf = emf().getObject();
      return new JpaTransactionManager( emf );
    } 
    
    

Spring Framework 4.0 M1:WebSocket 支持

工程 | Rossen Stoyanchev | 2013年5月23日 | ...

您可能已经看到,Spring Framework 4.0 的第一个里程碑已经宣布,并且我们已经发布了早期 WebSocket 支持。为什么 WebSocket 重要?它支持高效的双向 Web 通信,这在需要在客户端(通常是浏览器)和服务器之间高频率、低延迟交换消息的应用程序中至关重要。常见的示例包括交易、游戏、协作、数据可视化等等,但场景和用例的范围将随着时间的推移而增长。

WebSocket是一个非常广泛的主题!您可以观看我们在…上的“WebSocket 简介”

本周 Spring - 2013年5月21日

工程 | Josh Long | 2013年5月22日 | ...

本周 Spring

欢迎来到本周 Spring 的另一个版本!我们终于快用完 SpringOne2GX 的视频录制了……这是您将看到的最后一期 Spring 视频,因此请参考回放页面以获取索引。像往常一样,我们有很多内容要讲,所以让我们开始吧!

  1. Spring 负责人Juergen Hoeller刚刚宣布发布Spring Framework 4.0 M1 和 3.2.3.RELEASE。3.2.3 更新主要包括与 Java 8 支持相关的更新和修复。另一方面,4.0 里程碑是对 Spring 4.0 中许多令人惊叹的功能的展望,包括对 WebSockets、Java EE 7、@Conditional注释(与@Profile注释类似)等等的支持,所以请务必查看一下!
  2. TcServer 2.9.2 现已上市!此版本包含安全修复和更新,有关更多详细信息,请查看发行说明
  3. Jennifer Hickey 的演讲——跳出容器的思考 - CloudFoundry 上的独立应用程序已在 YouTube 上以高清格式发布。
  4. Stephen Bohlen 的演讲——面向 Java 开发人员的 Spring.NET 简介已在 YouTube 上以高清格式发布。
  5. InfoQ 对 Spring HATEOAS 做了一个不错的介绍
  6. Johnathan Mark Smith 发布了一篇关于如何使用 Spring 的 Java 配置风格的精彩文章。
  7. Xavier Padró 发布了一篇关于如何在 Spring Web Flow flow中进行通信的精彩文章。
  8. Static.com宣布了其 Hadoop 和 Cloud Foundry 支持的服务。坦率地说,作为托管需要后台 Hadoop 解决方案的应用程序的公共平台,它看起来非常酷而且成本效益高。
  9. 我不敢相信我错过了这个!RabbitMQ 3.1.0 发布了(有点旧闻),为了介绍它,您应该查看图片中的 RabbitMQ 3.1.0
  10. HMKCode 博客上有一篇关于使用 MyBatis、Spring 和 jUnit 集成来完成那些没有很好记录但很常见的事情的精彩文章
  11. Java Code Geeks 制作了一个关于如何在 Spring MVC 中处理表单中的单选按钮的精彩教程。
  12. Gerry Tan 发布了一篇关于如何使用 Spring MVC 绑定表单日期值的精彩博客。

Spring Framework 4.0 M1 和 3.2.3 可用

工程 | Juergen Hoeller | 2013年5月21日 | ...

尊敬的 Spring 社区:

我很高兴地宣布Spring Framework 4.0 的第一个里程碑,它提供了我们在几个关键主题上的工作成果。

  • 第一波Java SE 8 / OpenJDK 8 支持(一些细节如下)
  • JMS 2.0、JPA 2.1、Bean Validation 1.1 和 JSR-236 并发(来自 EE 7)的初步支持
  • 我们用于 bean 定义的通用条件机制的初步版本(@Conditional 与 @Profile 类似)
  • Spring 的WebSocket 端点模型(Rossen 将很快更详细地介绍)

关于 Java SE 8,我们在框架的几个方面支持 OpenJDK 8 版本 88 以上。

  • 在组件扫描和子类生成中支持1.8 字节码格式
  • 针对 Spring 回调接口的lambda 表达式和方法引用
  • 用于 Spring 数据绑定和格式化的JSR-310 日期时间值类型
  • 对 JDK 8参数名称发现机制的初步支持

注意:Spring 对 Java 8 的支持仍在开发中,并跟踪 OpenJDK 8 的快照,这些快照即将在 **9 月的 JDK 8 开发者预览版发布日期** 发布(参见 http://openjdk.java.net/projects/jdk8/)。我们预计届时将发布相应的 Spring Framework 4.0 版本候选发布版本,并在 SpringOne 大会上进行展示(9 月 9 日至 12 日;参见 http://springone2gx.com

本周 Spring - 2013 年 5 月 14 日

工程 | Josh Long | 2013 年 5 月 15 日 | ...

欢迎来到另一期《本周 Spring》!本周宣布了一些相当令人兴奋的项目,令人难以置信的是,我们几乎已经播放完了 SpringOne 2012 的回放内容!好在 SpringOne 2013 的议程网格即将上线,因此我们可以展望未来。像往常一样,我们有很多内容要涵盖,所以让我们开始吧!

为了准备即将上线的议程网格,许多新的 SpringOne 2013 会议主题已被接受。

  1. Jon Brisbin 宣布了 Reactor 项目。Reactor 项目旨在为基于异步 IO 的应用程序提供坚实的基础,在此基础上,很自然地可以为 Grails 和 Spring 等技术提供集成。Reactor 已经拥有良好的多语言支持,支持 Groovy 和 Java(特别是即将发布的 Java 8 版本!)。请务必查看此项目,如果您对它与其他异步技术相比如何有任何疑问,请查看评论部分!
  2. Spring Security 负责人 Rob Winch 一直在努力增强 Spring Security 和 Spring Security OAuth 的 Java 配置功能。他已经提供了 Spring Security OAuth Java 配置 API 的第一个版本,我相信他会感谢您对新 DSL 的任何反馈,所以一定要查看一下!干得好,Rob!
  3. **5 月 16 日星期四与 Chris Richardson(《POJOs in Action》的作者)举办网络研讨会**,主题是分解应用程序以实现可部署性和可扩展性。立即注册!
  4. 5 月 28 日星期二,加入 Broadleaf Commerce 的 Andre Azzolini 参加网络研讨会,他们将讨论 从 GWT 迁移到 SpringMVC 的经验教训
  5. Paul Chapman 在 SpringSource 博客上介绍了 Spring MVC 中对内容协商的多样化支持
  6. Chris Harris 的演讲,Spring Data MongoDB 项目,来自 SpringOne2GX 2012,现已在 YouTube 上提供高清版本!
  7. Lee Faus 的演讲,极致改造 - 应用程序版,来自 SpringOne2GX 2012,现已在 YouTube 上提供高清版本!
  8. JIWHIZ 博客和博主 Yuan Ji 共同撰写了一篇不错的文章,介绍了 Spring 的 Java 配置支持
  9. 这篇博文 - 来自博主 Chris Wong 在 1 月份发表的一篇名为“JmsTemplate 并非邪恶”的文章 - 解释了使用 Spring 的 CachingConnectionFactory 和原始 ConnectionFactory 的一些细微之处,然后,为了获得额外分数,介绍了一种显著加快 ActiveMQ(特别是)速度的方法。
  10. HMKcode 博客有一篇不错的、详尽的文章介绍了如何使用 jQuery-file-upload 插件与 Spring MVC
  11. 你查看过 HATEOAS 吗?HATEOAS 是一种设计模式,一种构建更好的 RESTful Web 服务的方法。Spring HATEOAS 使得在 Spring MVC 之上做到这一点非常简单,Geraint Jones 的这篇博客很好地介绍了 Spring HATEAOS
  12. 博主 Alexey Zvolinskiy 回答了一个常见问题:如何在 Spring MVC 中 将复选框绑定到在服务器之间来回发送的模型对象
  13. 我们的朋友 @baeldung 维护着关于 StackOverflow 上 Spring 的精彩博文 的每日 Twitter 订阅,我认为他挖掘出了一些绝对精彩的内容。一篇博文回答了我经常被问到的一个问题:如何在运行时枚举所有使用 Spring MVC @Controller 注解的 bean?
  14. 在浏览 @SpringAtSO 句柄时,我发现的另一篇精彩博文是这篇博文,它解释了如何将请求范围的属性传播到当前请求的线程之外。这篇博文通常适用于任何需要 请求范围的属性传播到其原始线程和请求之外的情况

Reactor - JVM 上异步应用程序的基础

工程 | Jon Brisbin | 2013 年 5 月 13 日 | ...

我们很高兴地宣布,经过长时间的内部孵化,我们正在发布一个用于 JVM 上异步应用程序的基础框架,我们将其命名为 *Reactor*。它为 Java、Groovy 和其他 JVM 语言提供抽象,使构建事件和数据驱动的应用程序更加容易。它也非常快。在普通的硬件上,使用最快的非阻塞 Dispatcher 可以每秒处理超过 15,000,000 个事件。还提供其他调度器,为开发人员提供从线程池样式、长时间运行的任务执行到非……

使用 Spring MVC 进行内容协商

工程 | Paul Chapman | 2013 年 5 月 11 日 | ...

有两种方法可以使用 Spring MVC 生成输出

  • 您可以使用 RESTful 的 @ResponseBody 方法和 HTTP 消息转换器,通常用于返回 JSON 或 XML 等数据格式。程序化客户端、移动应用程序和启用 AJAX 的浏览器是常见的客户端。
  • 或者,您可以使用 *视图解析*。尽管视图完全能够根据需要生成 JSON 和 XML(我的下一篇文章将详细介绍),但视图通常用于生成 HTML 等表示格式,用于传统的 Web 应用程序。
  • 实际上还存在第三种可能性 - 一些应用程序同时需要两者,而 Spring MVC 可以轻松支持此类组合。我们将在最后再回到这一点。

无论哪种情况,您都需要处理控制器返回的相同数据的多种表示(或视图)。确定要返回哪种数据格式称为 *内容协商*。

在三种情况下,我们需要知道在 HTTP 响应中发送哪种类型的数据格式

  • **HttpMessageConverters:**确定要使用的正确转换器。
  • **请求映射:**将传入的 HTTP 请求映射到返回不同格式的不同方法。
  • **视图解析:**选择要使用的正确视图。

确定用户请求的格式依赖于 ContentNegotationStrategy。开箱即用地提供了默认实现,但您也可以根据需要实现自己的。

在这篇文章中,我想讨论如何配置和使用 Spring 的内容协商,主要是在使用 HTTP 消息转换器的 RESTful 控制器方面。在以后的 文章 中,我将展示如何专门针对使用 Spring 的 ContentNegotiatingViewResolver 的视图设置内容协商……

本周 Spring - 2013 年 5 月 7 日

工程 | Josh Long | 2013 年 5 月 7 日 | ...

欢迎来到 *史诗般的一周 Spring*!许多新的会议主题已发布到 SpringOne 大会,因此请访问 网站 并查看特色会议主题!我们将在 5 月底之前将议程网格上线。

SpringOne2GX 2013 接受的特色会议主题!

      <li><a href="http://www.springone2gx.com/conference/santa_clara/2013/09/session?id=29165">Tackling Big Data Complexity with Spring</a> (Mark Fisher and Mark Pollack)</li>
          <li><a href="http://www.springone2gx.com/conference/santa_clara/2013/09/session?id=29395">Reactor - an asynch  framework for distributed web and enterprise architectures</a> (Jon Brisbin)</li>
      
    • 给单板滑雪者的 Spring(Dave Syer 和 Phil Webb)

还接受了许多其他新的会议主题

现在,让我们回到Spring的常规一周……像往常一样,我们有很多内容要讲,让我们开始吧!

  1. Juergen Hoeller和Marius Bogoevici的演讲,Spring应用的Java EE服务,来自SpringOne2GX 2012,现已在YouTube上提供高清视频!
  2. John Davies的演讲,Spring集成在实践中,来自SpringOne2GX 2012,现已在YouTube上提供高清视频!
  3. Kim Saabye Pedersen撰写了一个小的示例关于在接口上使用@Transactional以及Spring的事务管理基础架构。干得好,Kim!
  4. 是否可以将目前的Spring Petclinic扩展到单服务器实例每秒处理1000个请求?Ippon Technologies的Julien Dubois撰写了一系列五篇关于此主题的精彩博文。如果您错过了之前的综述,请查看完整系列,从这里开始!
  5. Petri Kainulainen撰写了一篇精彩的博文,介绍了如何使用Spring Data SOLR排序数据。
  6. 顺便说一句,我知道我之前提到过,但这确实非常方便。您查看过Alvaro Videla的RabbitMQ模拟器了吗?
  7. Spring Data高手Oliver Gierke对问题“如何以多租户方式使用Spring Data MongoDB?”做出了精彩的解答。一定要看看。一般来说,他的建议适用于许多类似场景。
  8. Serkan ÖZAL编写了一个很棒的基于字节码的RowMapper,可用于Spring的JDBC基础架构(如JdbcTemplate),并且可以像ORM一样处理关系。因为它基于字节码,所以速度非常快,并且不会出现Spring自己的BeanPropertyRowMapper的基于反射的性能限制。我还没有尝试过这个,但它看起来非常有前景!
  9. 我们的朋友Roger Hughes带着一个教程回来了(到目前为止,有两篇文章)。第一篇,使用Spring MVC进行RESTful Ajax,建立了一个应用程序(没有REST和Ajax),第二篇然后介绍了使用Jackson序列化数据对象,Jackson是一个JSON序列化器。
  10. Bharat Sharma也撰写了一篇关于使用Spring MVC序列化为JSON的不错的文章
  11. 博主Kal撰写了一篇关于Spring MVC如何使用Spring MVC和commons-fileupload简化文件上传的不错的文章。

本周Spring - 2013年4月30日

工程 | Josh Long | 2013年4月30日 | ...

欢迎来到另一期本周Spring!像往常一样,我们本周有很多内容要讲,让我们开始吧。您错过了上周Pivotal的公开发布吗?观看重播,并了解GE对这个新实体的投资!Pivotal的使命是将消费级软件引入企业——Spring、Groovy、Grails、RabbitMQ、Redis和Cloud Foundry等开源技术已在其中得到广泛采用。查看新的Pivotal网站,在“社区”链接(右上角)下,您可以找到一些可能会让您感到惊讶的其他开源项目!

  1. Oliver Gierke宣布了Spring HATEOAS 0.5,其中包含许多新功能
  2. Spring Security负责人Rob Winch宣布Spring Security 3.1.4现已可用。这是一个维护版本,包含许多错误修复,包括对Spring 3.2的OSGi支持。
  3. Spring Data高手Oliver Gierke(这个家伙真能跑!)也发布了Spring Data路线图:介绍Spring Data“Babbage
  4. Spring Data Arora SR1本周发布(以Sanjeev Arora命名)。顺便说一句,您可能已经注意到,各种Spring Data发行列车的名称都是根据计算机科学领域的各种有影响力的人物命名的。这个新版本以查尔斯·巴贝奇命名。
  5. Adam Shook和Mark Pollack博士的网络研讨会,Hadoop、Pivotal HD和用于Apache Hadoop的Spring,现已上线。
  6. Azul Systems的Gil Tene在SpringOne2GX 2012上发表了一个精彩的演讲,名为了解Java垃圾回收以及您可以做些什么,现已上线。
  7. 现在可以在YouTube上观看高清版本的SpringOne2GX重播:使用Spring集成和Spring Batch构建高性能应用,案例研究:配置多站点内存数据库
  8. James Watters分享了他发现的一个关于设置Cloud Foundry和BOSH的视频。它非常精彩,如果您想掌握BOSH,值得一看。
  9. 人们有时会写一些让我感到惊讶的博文。Javarevisted博客有一篇不错的文章介绍了Spring的(相当内部的,尽管稳定)org.springframework.util.StringUtils类,并举例说明了如何将集合转换为分隔符分隔的字符串。我认为这对于这个主题来说可能信息太多了,但我喜欢这种热情!
  10. RabbitMQ开发者布道者Alvaro Videla撰写了一篇关于如何从PHPUnit单元测试RabbitMQ的文章。这种方法非常酷,但我不知道它在Java和jUnit中与并发测试套件执行的兼容性如何。无论如何,这都是单元测试我最喜欢的消息队列的好方法!
  11. 您需要一个Spring集成适配器吗?您查看过Spring集成扩展存储库吗?此存储库只是收集比Spring集成核心运行速度更快或仍在完善的适配器。这是一个查找各种问题解决方案的好地方。事实上,甚至拉取请求都充满了有用的东西——我看到由令人惊叹的Gary Russell贡献的MQTT适配器!
  12. 查看@gopivotal博客上这篇精彩的文章每分钟80万条消息:诺基亚HERE如何使用#RabbitMQ制作实时交通地图。它介绍了基于Spring AMQPRabbitMQ的诺基亚HERE架构。

获取Spring通讯

通过Spring通讯保持联系

订阅

领先一步

VMware提供培训和认证,以加速您的进步。

了解更多

获取支持

Tanzu Spring在一个简单的订阅中提供对OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

查看Spring社区中所有即将举行的活动。

查看全部