本周 Spring - 2013 年 6 月 4 日

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

欢迎阅读另一期《本周 Spring》。SpringOne2GX 早鸟票优惠将于 2013 年 6 月 10 日截止,请现在就做好安排以享受优惠。此外,本月我们还有三场网络研讨会,请查看下面的详细信息。像往常一样,内容很多,让我们开始吧!

  1. 我将于 6 月 13 日举办一场关于使用 Spring 构建高效 REST API 的网络研讨会。我将介绍 Spring 对 REST 服务的深度支持,从 Spring MVC 开始,然后沿着理查森成熟度模型向上,融入 Spring HATEOAS,最终是 Spring Data REST。在此过程中,我们将探讨 REST shell,以及通过 OAuth 实现安全等其他问题。
  2. 加入 Jon Brisbin,他将于 6 月 18 日在网络研讨会中介绍 Reactor。Reactor 为需要高吞吐量执行合理小的无状态、异步处理任务的应用程序提供了基础框架。
  3. 6 月 27 日,加入 Liberty University 的 Tony Erksine,他将指导我们如何谈论 Spring 并影响他人,这是一堂关于软技能和技术采用策略的实用课程,旨在帮助激发您公司中其他开发人员对新技术的兴趣并使用它们——在本例中是 Spring。
  4. 如果您在湾区,请务必参加目前正在圣克拉拉举行的 JAXConf。门票是免费的,有很多优秀的演讲者。我明天将在那里就 Spring 4 和使用 Spring 进行多客户端开发发表演讲,如果您想谈论 Spring、Cloud Foundry 和大数据,请随时过来。
  5. 您可能已经看到了 Paul Chapman 上个月介绍Spring MVC 对内容协商的支持的精彩帖子,本月他带来了关于使用 Spring MVC 视图进行内容协商的帖子。务必查看这两篇帖子,它们为在日益发展的 REST 范式中处理内容协商提供了坚实的基础。
  6. 我们的朋友 Petri Kainulainen 继续研究 Spring Data SOLR,并解释了如何在 Spring Data 已提供的功能之上为实现添加自定义仓库方法。此示例是在 Spring Data SOLR 的上下文中进行的,但方法是通用的,适用于所有仓库实现。
  7. RabbitMQ 忍者 Alvaro Videla 在最新一期《Developer Magazine》中出色地介绍了 RabbitMQ 的强大之处
  8. 时不时地,我会遇到一些旧但很酷的内容,比如这个演示如何使用 Scala 构建 Spring MVC 应用程序的项目。您可能会想,Scala 和 Java 之间没有太大区别,但这仍然是一个有趣的示例。请查看。
  9. 我一直沉浸在 REST 中,为即将到来的网络研讨会做准备,我偶然发现了 Apache Shiro PMC 成员和 REST 忍者 Lez Hazelwood 的一篇精彩的(尽管有点老)帖子,关于在 Spring MVC 中使用 REST 时提供良好的客户端错误反馈
  10. Spring HATEOAS Lead 和 Spring Data Ninja Oliver Gierke 去年在 Oredev 做了一场精彩的演讲,介绍了 Spring HATEOAS,并且可以在线观看。一定要看看!
  11. 我们的朋友 Nicolas Fränkel 回来了,这次是他对如何在 Spring 配置中处理模块化的简短阐述。
  12. JavaBeat 有一篇不错的文章,介绍了如何在 Spring MVC 中处理主题
  13. BitwiseOR 博客有一篇不错的文章,介绍了如何设置一个简单的、可工作的 Spring MVC 应用程序。
  14. Alexey Zvolinskiy 写了一篇包含代码的精彩完整帖子,介绍了如何使用Spring Data JPA 构建应用程序
  15. 来自《The small world for Yiyi》博客的 David 写了一篇不错的文章,介绍了如何在 Spring MVC 中使用 PDF、XML 和 JSON
  16. 我们的朋友 Johnathan Mark Smith 又回来了,这次他又带来了一段视频,介绍了如何使用 Spring 的 Java 配置

使用视图进行内容协商

工程 | 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 Lead Michael Minella 宣布发布了 Spring Batch 2.2.0 RC2。新版本充满了很棒的新特性,包括对 Spring Batch Java 配置 API 的支持以及 Spring Data GemFire ItemReaderItemWriter
  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 变得容易——MQTT 是一种适用于轻量级消息传递的消息技术。
  6. Oliver Gierke 在 Stack Overflow 上针对问题《如何将 Spring Data 页面作为 JSON 返回》写了一篇很棒的回复。
  7. 这个新闻汇总的长期读者会知道 Thymeleaf,这个模板引擎为您的 Web 应用程序视图模板注入了新的活力,并且与 Spring 配合得非常好。第一个稳定版本 2.0.0 的 Thymeleaf-testing 刚刚发布
  8. Joris Kuipers 在 Trifork 博客上宣布了一组新的宏,用于使用 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

欢迎阅读另一期《本周 Spring》!SpringOne2GX 视频录像终于快放完了……这将是您在本周 Spring 中最后一次看到它们,请参考回放页面获取索引。像往常一样,我们有很多内容要介绍,让我们开始吧!

  1. Spring lead Juergen Hoeller 刚刚宣布发布了 Spring Framework 4.0 M1 和 3.2.3.RELEASE。3.2.3 版本主要包含与 Java 8 支持相关的更新和修复。另一方面,4.0 里程碑则展望了 Spring 4.0 中许多很棒的特性,包括对 WebSocket、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 集成中那些不怎么有文档记载但常见的事情做好,文章链接:http://hmkcode.com/mybatis-spring-junit-the-missing-part/
  11. Java Code Geeks 编写了一篇精彩的教程,介绍了如何在 Spring MVC 的 form 中处理单选按钮
  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 定义的通用条件机制(类似 @Profile 的 @Conditional)的首次实现
  • Spring 的 WebSocket 端点模型(Rossen 将很快详细介绍)

关于 Java SE 8,我们在框架的几个领域支持 OpenJDK 8 build 88+

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

注意:Spring 对 Java 8 的支持正在进行中,并跟踪 OpenJDK 8 快照在前往 JDK 8 Developer Preview 日期(9 月)的途中(参见 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 项目旨在为 JVM 上的异步 IO 应用程序提供坚实的基础,在此基础上很容易为 Grails 和 Spring 等技术提供集成。Reactor 已经具备良好的多语言支持,支持 Groovy 和 Java(特别是即将发布的 Java 8!)务必查看此项目,尤其是评论部分,如果您对它与其他异步技术的比较有疑问!
  2. Spring Security Lead Rob Winch 一直在积极增强 Spring Security 和 Spring Security OAuth Java 配置的故事。他已经提供了Spring Security OAuth Java Configuration API 的第一个版本,我相信他会很乐意收到关于新 DSL 的任何反馈,所以一定要去看看!干得漂亮,Rob!
  3. 5月16日星期四的网络研讨会,主讲人 POJOs in Action 作者 Chris Richardson,主题为“分解应用程序以实现可部署性和可扩展性”。立即注册!
  4. 参加 Broadleaf Commerce 的 Andre Azzolini 5月28日星期二的网络研讨会,他们将讨论从 GWT 迁移到 SpringMVC 的经验
  5. Paul Chapman 在 SpringSource 博客上介绍了Spring MVC 中内容协商的各种支持
  6. Chris Harris 的演讲《Spring Data MongoDB 项目》现已在 YouTube 上提供高清版本!
  7. Lee Faus 在 SpringOne2GX 2012 上的演讲《极限改造 - 应用版》现已在 YouTube 上提供高清版本!
  8. JIWHIZ 博客以及博主 Yuan Ji 写了一篇不错的文章,介绍了Spring 的 Java 配置支持
  9. 这篇博文——来自博主 Chris Wong 在一月份的一篇题为“JmsTemplate 并非邪恶”的博文——解释了使用 Spring 的 CachingConnectionFactory 与原始 ConnectionFactory 的一些微妙之处,然后,作为额外的加分项,介绍了一种显著加速 ActiveMQ(特别是)的方法。
  10. HMKcode 博客有一篇详尽的精彩文章,介绍了如何将jQuery-file-upload 插件与 Spring MVC 结合使用。
  11. 您看过 HATEOAS 了吗?HATEOAS 是一种设计模式,一种构建更好的 RESTful Web 服务的方法。Spring HATEOAS 使在 Spring MVC 上实现它变得非常简单,这篇由 Geraint Jones 撰写的博客很好地介绍了 Spring HATEOAS
  12. 博主 Alexey Zvolinskiy 回答了一个常见问题:如何在 Spring MVC 中将复选框绑定到发送回服务器的模型对象?
  13. 我们的朋友 @baeldung 维护着一个关于 StackOverflow 上的 Spring 的精彩帖子的每日 Twitter feed(@SpringAtSO),我认为他挖出了许多绝对惊人的内容。其中一篇文章回答了我经常被问到的一个问题:如何在运行时枚举所有 Spring MVC @Controller 注解的 beans?
  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(我下一篇博文会更详细介绍),但视图通常用于为传统的 Web 应用程序生成 HTML 等呈现格式。
  • 实际上还有第三种可能——一些应用程序需要两者,Spring MVC 很容易支持这种组合。我们将在最后再次讨论这个问题。

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

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

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

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

在这篇文章中,我想讨论如何配置和使用 Spring 的内容协商,主要是在使用 HTTP 消息转换器的 RESTful Controller 方面。在稍后的文章中,我将展示如何专门针对使用 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 for Snowboarders (Dave Syer and Phil Webb)

还接受了许多其他新议程

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

  1. Juergen Hoeller 和 Marius Bogoevici 在 SpringOne2GX 2012 上的演讲《Java EE 服务与 Spring 应用程序》现已在 YouTube 上提供高清版本!
  2. John Davies 在 SpringOne2GX 2012 上的演讲《野外 Spring Integration》现已在 YouTube 上提供高清版本!
  3. Kim Saabye Pedersen 写了一个小例子,演示了如何在 Spring 的事务管理基础设施中在接口上使用 @Transactional。干得漂亮,Kim!
  4. 是否有可能将现有的 Spring Petclinic 在单个服务器实例上扩展到每秒 1000 个请求?Ippon Technologies 的 Julien Dubois 就此主题写了五篇很棒的博客系列。如果您在之前的汇总中错过了它们,请从这里开始查看整个系列!
  5. Petri Kainulainen 写了一篇很棒的帖子,介绍了如何使用 Spring Data SOLR 对数据进行排序。
  6. 顺便说一句,我知道我之前提过这个,但它确实很方便。你有没有看看 Alvaro Videla 的 RabbitMQ 模拟器
  7. Spring Data ninja 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(一个 JSON 序列化器)序列化数据对象
  10. Bharat Sharma 本周也写了一篇关于使用 Spring MVC 将数据序列化为 JSON 的不错帖子!
  11. 博主 Kal 写了一篇不错的帖子,介绍了Spring MVC 如何使用 commons-fileupload 简化文件上传

获取 Spring 新闻稿

订阅 Spring 新闻稿,保持联系

订阅

先行一步

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

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部