本周 Spring - 2013 年 4 月 23 日

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

欢迎回到本周 Spring 的另一个环节!在旧金山,我们正在经历春天典型的勃勃生机和美丽的春天气候。同样恰如其分的是,Pivotal 开源社区(包括 Cloud FoundrySpringSource)的事情繁忙无比,因为我们正朝着 4 月 24 日 Pivotal 计划启动 迈进。到时候见!

事不宜迟,让我们进入本周的综述

  1. 你们见过 Spring Batch 2.2.0.RC1 中令人惊叹的 Java 配置支持 吗?我刚刚链接给你们的代码演示了一个完整的可运行 Spring Batch 作业,它读取一个 .csv 文件,然后将记录写入数据源,所有这些都在类中配置,完全使用 Java。这演示了 2.2.0 中的 @EnableBatchProcessing 注解。查看它
  2. 现在可在 YouTube 上以高清观看新的 SpringOne2GX 回放:使用 Spring 和 vFabric 实现领域驱动设计Cloud Foundry 上的批处理和集成以及奖励环节 了解 Java 垃圾回收以及您可以做些什么
  3. FuzzyDB 开源项目 在推特上说他们 发布了 FuzzyDB 的新版本,其中 Spring Data 绑定与 Spring Data Arora 发行版保持一致。恭喜,伙计们!
  4. 你有没有机会试用 Thymeleaf,这个对 HTML5 和 Spring MVC 友好的模板引擎?如果你想学习 *更多* 内容,你可能会喜欢这个名为 Thymeleaf,它会混合吗? 的演示文稿
  5. David Welch 编写了一个 Spring Data Mongo 的快速演示 并公开了这项工作。他在推特上说 他用 8 分钟、4 个类和一个 pom.xml 就完成了工作演示。干得好,伙计!
  6. 查看 Ramnivas Laddad 在 SpringSource YouTube 频道 SpringSourceDev 上直播的精彩演讲 SpringOne2GX 上的 CloudFoundry 架构演讲
  7. Spring HATEOAS 负责人 Oliver Gierke 推特上发布了这篇博文的链接 "我如何向我妻子解释 REST",乍一看,这似乎只是一个人试图向没有相同技术背景的人解释一个相当深奥的技术概念,但很快就变成了(我认为 *非常* 有见地)对 REST 的适用性的看法。如果你想将你的 REST 技术提升到一个新的水平,请查看 Spring HATEOAS
  8. 我个人非常喜欢新的 Java 配置 API,包括最近发布的和当前可在预览版本中使用的 API。我在上面展示了一个 Spring Batch API 的 *非常* 简单示例。上周我还花了一点时间 撰写了关于功能强大的 Spring Social Java 配置 API 的文章,该 API 将很快在 1.1.0.M2 版本中发布。
  9. 您可以使用 @Required 注解 让 Spring 执行某种前提条件检查,以在运行时 *强制要求* 属性满足非 null 值,否则 Spring 将中止对象的构建。这有助于避免任何静默的 NullPointerException。这篇 JavaBeat 博文很好地解释了如何使用 @Required
  10. 如何在 Java 中进行操作 博客发布了一篇关于如何在 Spring Security 3 中 创建自定义 UserDetailsService 的好文章。
  11. JavaCodeGeeks 博客发布了一篇关于 如何使用 Spring MVC 创建 RESTful 服务 的好文章。
  12. Brian 的 Java 博客 发布了一篇关于 使用 Spring AOP 以及基于注解和 XML 的配置 选项的文章。

介绍 Spring XD

工程 | Mark Fisher | 2013 年 4 月 23 日 | ...

今天,我们正式启动一项名为 Spring XD 的新计划,其主题是“应对大数据复杂性”1

Spring Data 团队在过去几年里非常忙碌,不仅为 NoSQL 数据存储提供支持,而且简化了 Hadoop 的开发体验。通过创建 用于 Apache Hadoop 的 Spring 项目,我们通过提供丰富的配置模型和跨 Hadoop 生态系统项目(如 Hive 和 Pig)一致的编程模型,使启动 Hadoop 应用程序的开发变得更容易。正如 Spring 用户所期望的那样,可以

  1. 将 MapReduce 作业配置和运行为容器管理的对象。
  2. 使用 HDFS、HBase、Pig 和 Hive 的模板辅助类来从应用程序中删除样板代码。

Spring……

本周 Spring - 2013 年 4 月 16 日

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

欢迎来到本周 Spring 的另一个环节!对于 Pivotal 的 Spring 来说,这是一个令人兴奋的一周,你可以在重新安排的 Pivotal 启动活动(4 月 24 日)上了解更多信息。

  1. 如果你阅读速度太快,请注意 Pivotal 已将启动活动重新安排到 4 月 24 日。在此注册
  2. Arjen Poutsma 已 宣布发布 Spring Web Services 2.1.3.RELEASE。新版本主要包含错误修复,有关完整详细信息,请 查看变更日志
  3. 不要错过即将举行的与 Donald Miner 和 Mark Pollack 讨论 Pivotal HD 和 Spring Hadoop 的网络研讨会,这是一个针对对 Pivotal HD 感兴趣的人员的良好入门网络研讨会。
  4. 现在可在 YouTube 上以高清观看新的 SpringOne2GX 回放:Cloud Foundry 架构NewSQL 中的有效设计模式
  5. 前几天 Reddit 上有一篇很棒的文章,解释了 REST 和 SOAP 之间的区别,以 Martin Lawrence 为例。这与 Spring *没有任何* 关系,但足够有趣,值得分享。
      Spring, of course, has an amazing REST stack and I highly encourage people to check out how to build consolidated, streamlined REST services with Spring! Moving on... :) 
    
  6. James Rossiter 发布了一篇关于如何使用 Spring InitBinder 来解析类型不匹配并在 Spring MVC 中从 POST 到控制器操作绑定异常的文章。
  7. @olivergierke 在 Twitter 上提出了一个很好的观点:在 Spring 中添加 JTA 1.2 JSR javax.transaction.Transactional 注解需要多少代码?几乎没有!此处的大部分代码只是单元测试。否则,这只是将 JTA 注解映射到 Spring 已支持的引擎的简单映射,该引擎当前还支持原生 Spring @Transactional@javax.ejb.TransactionAttribute 注解。
  8. 您是否正在研究 Gradle 并希望快速入门 Spring?Giancarlo Frison 发布了一篇关于可用于 Spring 应用程序的引导 Gradle 构建 的好文章。
  9. Eugen Paraschiv 发布了一篇关于如何使用 RestTemplate 执行 HTTP 基本身份验证 的好文章。
  10. Spring 长期以来一直支持一个名为 org.springframework.util.StopWatch 的实用程序类,该类可用于测量方法调用的执行情况。Javarevisited 博客有一篇
      <a href="http://www.stumbleupon.com/su/1rKtfP/javarevisited.blogspot.com.au/2012/04/how-to-measure-elapsed-execution-time.html">nice post on how to use the <CODE>StopWatch</code> class</a>.
    </LI>
    
  11. 这篇文章相当旧,但我刚刚偶然发现了它,我认为这是一篇经过深思熟虑的 介绍 Spring 中面向方面编程 (AOP) 的演示文稿。

本周 Spring - 2013 年 4 月 9 日

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

欢迎回到本周 Spring 的另一个环节!像往常一样,我们有很多内容要介绍,所以让我们开始吧!

  1. SpringSource 首席技术官 Adrian Colyer 概述了 SpringSource 和 Spring 项目在 Pivotal 计划 下的方向和动力,这是一个从 EMC 分拆出来的新公司,其中包括——除其他外——SpringSource、Cloud Foundry 和 GreenPlum。如果你想了解 Spring 在这项新计划中的——咳咳——*关键* 作用,这绝对值得一读!
    </LI>  
    <LI> Spring Batch lead Michael Minella has <A href="http://www.springsource.org/node/9666"> announced that Spring Batch 2.2.0.RC1 is now available</a>.
    	The new release includes preliminary support for Spring Data, Java configuration support, non-identifying job parameters 
    	and numerous fixes and polishes. This release is amazing, and definitely worth a look. I, personally, <EM>love</EM> the Java configuration API that's
    	been surfaced. You don't need to write another…

Pivotal 计划中的 Spring 和开源

工程 | Adrian Colyer | 2013 年 4 月 3 日 | ...

到目前为止,您可能已经听说过 Pivotal。我想在这里花一点时间解释一下这对 Spring 意味着什么,并告诉您我们 2013 年的一些计划。

如果您错过了,以下是 Pivotal 的重要背景信息:在 Paul Maritz 的领导下,该项目汇集了 EMC 和 VMware 的核心人员和项目,以将“消费级”技术带入企业。我们看到新一代应用程序正在兴起,它们由新的数据结构驱动,并将根据客户是谁、在哪里以及他们当下正在做什么来进行互动和服务……

本周 Spring - 2013年4月2日

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

欢迎来到另一期《本周 Spring》!我刚刚从Devoxx UKDevoxx France回来,在那里我很高兴与来自各行各业使用 Spring 的开发者交流。我还参加了伦敦 Skills Matter 的演讲关于使用 Spring 构建 Web 应用程序。感谢 Skills Matter、伦敦 Spring 用户组和令人敬佩的Rob Harrop邀请我,这真是太荣幸了!如果您感兴趣,该环节的视频已上线

  1. 立即注册2013 年 SpringOne 2GX 超早鸟价,地点:美国加利福尼亚州圣克拉拉,2013 年 9 月 9 日至 12 日!
  2. Gary Russell 宣布Spring AMQP 1.2.0.M1 现已可用
  3. <LI> The Cujojs team has announced that <CODE>rest.js</CODE> is <a href="http://cujojs.com/">now part of Cujo.js</a>
    <a href…

本周 Spring - 2013年3月26日

工程 | Josh Long | 2013年3月26日 | ...

欢迎来到另一期《本周 Spring》!本周我在寒冷的(brrr!)英国伦敦和法国巴黎参加Devoxx UKDevoxx FR,并且——今晚——我在 Skills Matter 为伦敦 Spring 用户组做了一次演讲。这是一次愉快的经历。如果您在法国并且想谈论 Spring,请随时联系我

  1. CujoJS 团队宣布When.js 2.0 现已可用
  2. 我发现了一些介绍 Spring Integration 的不错的文章。这里是第一部分第二部分
     These posts are very thorough and well worth a read! </LI>
     <LI>New SpringOne2GX replays now available in HD on YouTube: <a href="http://www.springsource.org/node/4302">What's New in Spring Integration 2.2 and Spring Integration, Batch, &amp; Data Lightning Talks</a>.</LI>
     <LI> Did you guys miss SpringOne2GX 2012? Don't fret, Oleg Zhurakousky and Arjen Poutsma's talk introducing <a href="http://t.co/nquWxe7L3u">how to use Spring with Scala is now available on InfoQ</a>. </LI>
     <LI>Michael Isvy's been hard at work refactoring the code 
    	 of the canonical Spring PetClinic reference…

Spring Petclinic 现在在 Github 上!

工程 | Michael Isvy | 2013年3月21日 | ...

我们很高兴地宣布,Spring Petclinic 示例应用程序已重构。

源代码现在可在 github 上获取。以下是新应用程序的屏幕截图:

以下是新架构的概述

Spring,Spring,Spring

我们使用了以下 Spring 功能

  • 使用注解的依赖注入
  • 使用 jdbc (JdbcTemplate)、JPA 或 Spring Data JPA(存储库层)的数据访问集成。您可以通过在 web.xml 或其中一个 JUnit 测试中设置相应的 bean 配置文件来选择使用哪个实现。
  • 使用 @Transactional 的事务(服务层)
  • 使用 @Cacheable 和 ehcache 作为缓存实现的缓存(服务层)
  • 面向方面的编程(用于监控每个存储库方法被调用的次数)
  • Spring MVC:使用 Bean Validation (JSR-303) 的表单验证
  • Spring MVC:使用 ContentNegotiatingViewResolver 的内容协商 (html、xml 或 atom)
  • Spring MVC:使用 SimpleMappingExceptionResolver 的异常处理
  • Spring MVC:使用 Spring MVC 测试框架

 

我们充满活力的社区

我们收到了来自社区专家的很多贡献(包括一些开源项目的负责人)。

 

Thymeleaf

如果您还没有听说过它,Thymeleaf 可以被视为 JSP 的替代品。它将自己定义为一个 XML/XHTML/HTML5 模板引擎。

它基于一些带有少量命名空间魔法的纯 HTML 文件。

Thymeleaf 项目的 Daniel 和 Soraya 创建了一个使用 Thymeleaf 代替 JSP 的 Spring-Petclinic 分支。他们在博客文章中记录了迁移步骤:http://www.thymeleaf.org/petclinic.html

Spring Petclinic 的 Thymeleaf 分支可在此处获得:https://github.com/thymeleaf/thymeleafexamples-petclinic

要了解有关 Thymeleaf 的更多信息:http://www.thymeleaf.org

在 Twitter 上关注 Thymeleaf:https://twitter.com/thymeleaf

 

Dandelion

Dandelion 提供了一套您可以与 JSP 或 Thymeleaf 一起使用的标签库。

我们在 Spring-Petclinic 中使用它来处理 DataTables。它基于 jQuery DataTables 和 Bootstrap 生成表格。

您可以执行以下操作


<datatables:table data="${ownerList}" id="dataTable"  theme="bootstrap2" export="pdf">
 <datatables:column title="Name" property="name" sortable="true" />
 <datatables:column title="Address" property="address" sortable="true" />
</datatables:table>

然后输出的 html 表格如下所示

Dandelion 用于 Spring Petclinic 的主分支中。

Dandelion 项目的 Thibault Duchateau 撰写了一篇不错的博客文章,描述了 Spring Petclinic 应用程序的迁移

要了解有关 Dandelion 的更多信息: http://dandelion.github.com/

在 Twitter 上关注他们:https://twitter.com/dandelion_proj

 

Maven 还是 Gradle?

默认情况下,Spring Petclinic 使用 Maven,因为它是 Java 应用程序最常见的选择。虽然与大多数实际应用程序相比,Spring Petclinic 相对较小,但它的 Maven pom.xml 文件已经非常冗长。

来自 Thoughtworks 中国的李燕辉 (Li Yanhui) 已经很好地将 Spring Petclinic 迁移到 Gradle。这是一种并排比较 Maven 和 Gradle 的好方法。build.gradle 配置文件确实更容易理解。它目前包含 143 行(而 Maven POM 包含 543 行)。

您可以在此处浏览基于 Gradle 的 Spring Petclinic 版本:https://github.com/whimet/spring-petclinic 感谢他们,我们能够识别 Spring Petclinic 中包含代码重复和缺乏自动化测试的几个地方。

 

性能测试:让我们扩展!

是否可以采用现在的 Spring Petclinic 并将其扩展到单台服务器实例上每秒 1000 个请求?来自 Ippon Technologies 的 Julien Dubois 撰写了一篇关于此主题的精彩五部分博客文章。

它回答了诸如以下问题:- 我应该依赖会话上下文吗?(第二部分) - 我应该使用哪个 Apache Tomcat 连接器?(第二部分) - 我应该使用哪个数据库连接池?(第三部分) - JDBC 是否比 JPA 或 Spring Data JPA 更快?(第四部分) - 使用 OpenSessionInViewFilter 的优点是什么?(第四部分)

 

参考文献

GitHub 上的 Spring Petclinic Cloud Foundry 上的 Spring Petclinic Petclinic + Thymeleaf Petclinic + Gradle

 

Spring Data GemFire 1.3.0 发布

工程 | David Turanski | 2013年3月14日 | ...

我很高兴地宣布 Spring Data GemFire 1.3.0 的 GA 版本发布。除了许多小的错误修复和增强之外,此版本还包含一些值得注意的新功能,使使用 GemFire 编写 Java 应用程序更加容易

函数的注解支持

GemFire 通过提供远程函数执行框架,提供了“将代码带到数据”的能力。为了保持 Spring 的核心价值观,Spring Data GemFire 隐藏了注册和执行远程函数所需的样板代码,允许您编写 POJO 并专注于应用程序逻辑。有关详细信息,请参阅 Spring Data GemFire 参考指南中的函数执行的注解支持章节。

简化与 GemFire 数据源的连接

GemFire 提供了许多选项来调整其连接池的性能,以及配置如何管理和同步本地数据。Spring Data GemFire 命名空间支持所有这些选项,但是许多应用程序只是需要读/写访问 GemFire 数据网格的客户端。对于此类应用程序,现在可以作为客户端连接到 GemFire,而无需显式配置池或客户端区域

 <gfe-data:datasource>
        <gfe-data:locator host="${host}" port="${port}"/>
 </gfe-data:datasource>

上述配置将创建一个客户端缓存、池和所有服务器上可用区域的代理客户端区域,并使用合理的默认值,并将它们注册为 Spring bean。

JSON 支持

GemFire 7.0 提供了存储 JSON 并具有完整查询支持的功能。通常,这需要应用程序使用 JSONFormatter 将 GemFire 的内部格式转换为 JSON 字符串,反之亦然。Spring Data GemFire 现在提供了一个选项,可以为选定的区域自动执行此转换,以及使用 Jackson 的 ObjectMapper 从对象到 JSON 的单向转换。此功能使用 Spring AOP 来拦截 Region 和 GemFireTemplate 上的适当操作。有关详细信息,请参阅Spring Data GemFire 参考指南

STS 3.2.0 的性能改进

工程 | Martin Lippert | 2013年3月12日 | ...

最新版本的 Spring Tool Suite (3.2.0) 包含许多不同领域的众多性能改进。我们不仅采用了 Eclipse Juno SR2 维护版本中的最新改进(该版本修复了新 Eclipse 4 平台 UI 的大量性能问题),而且还改进了许多 STS 内部组件的性能,特别是针对 Spring 项目的 Java 编辑和构建时间。

为了演示这些改进,这里有一个快速屏幕截图,显示了 STS 3.1.0 和 3.2.0 并排比较。

仍有更多工作要做,我们将继续在 STS 3.3.0 版本(计划于 2013 年 7 月发布)中改进这些领域。如果您想了解更多详细信息,关注进一步的改进,提交更多信息和/或报告具体的性能或内存问题,请查看/使用此 JIRA 工单:https://issuetracker.springsource.com/browse/STS-3054……

获取 Spring 简讯

通过 Spring 简讯保持联系

订阅