介绍用于开发 Apache Hadoop YARN 应用的 Spring YARN 框架

发布 | Janne Valkealahti | 2013 年 9 月 10 日 | ...

我们非常高兴地揭开秘密,并作为 Spring for Apache Hadoop 2.0 M1 版本的一部分发布对编写基于 YARN 的应用的支持。在这篇博文中,我将向您介绍 YARN、它的功能以及 Spring 如何简化基于 YARN 的应用开发。

如果您在过去一两年一直关注 Hadoop 社区,您可能已经看到很多关于 YARN 和 Hadoop 下一个版本的 MapReduce(称为 MapReduce v2)的讨论。YARN(Yet Another Resource Negotiator)是 MapReduce 项目的一个组件,旨在克服一些…

Spring Data Babbage 版本列车正式发布 (GA)

发布 | Oliver Drotbohm | 2013 年 9 月 10 日 | ...

亲爱的 Spring 社区,恰逢 SpringOne 2013,我们很高兴宣布代号为 Babbage 的 Spring Data 版本列车的 GA 版本现已发布。该版本总结了 Spring Data Core、JPAMongoDBNeo4j 模块的一系列新功能和改进的开发工作,并将作为即将发布的众多社区模块的基础。以下是此版本最重要的功能。

通用升级 / Spring Data Commons

  • Spring Data Core 中对 Spring 4 和 JDK 8 兼容性的改进将渗透到所有模块
  • 扩展的 Pageable/Page API
  • Spring MVC 的高级 Web 和超媒体集成
  • 支持在仓库派生查询方法名称中使用 count…By
  • 升级到 Querydsl 3.x 版本
  • 改进所有模块的 CDI 扩展

本周 Spring - 2013 年 9 月 10 日 - SpringOne2GX 2013 特别版

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

欢迎来到本周 SpringSpringOne2GX 2013 特别版!

我们现在正值位于加利福尼亚州圣克拉拉的 SpringOne2GX 2013 大会的第二天!昨天的主题演讲发布了许多令人兴奋的新公告和介绍,我将在此讨论其中一些,并在本周的剩余时间进行后续报道。

当然,这里是对 Spring 社区和(太棒了!!)SpringOne2GX 2013 中所有亮点进行的简要回顾!毫不夸张地说,这是迄今为止最激动人心的 SpringOne2GX。

Some of the amazing Spring project leads at SpringOne2GX 2012

我最喜欢 SpringOne2GX 的一点是它为与会者提供了接触那些杰出思想家的机会。今晚主题演讲晚宴后,一些项目负责人停留了几分钟,为我拍了这张即兴照片。Spring 核心负责人 Juergen Hoeller 位于前排中央,穿着蓝色衬衫。顺便说一句,Juergen 实际上不发推文(该账户只是占位符!),这使得在 SpringOne 上与他交流的机会变得更加不可思议!从 Juergen 开始逆时针方向,接着是 Spring Security 负责人 Rob WinchSpring MobileSpring Android

本周 Spring - 2013 年 9 月 3 日

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

欢迎来到本周 SpringSpringOne 即将到来!本周末将以 Cloud Foundry Platform 活动拉开帷幕,并持续到下周四。我个人对今年的展会感到非常兴奋(也有点紧张!)。它将非常精彩。昨天在美国可能是假期(希望大家都度过了一个愉快的假期!),但我们 Spring 团队的大多数人都在为 SpringOne2GX 紧锣密鼓地工作!

我的 SpringOne2GX 2013 之路 SpringOne2GX 2013 的议程看起来棒了!我关注很多不同的领域,比如开放网络 (REST 驱动的架构)、大数据、云和安全,而在 SpringOne 上,我完全可以尽情地了解每一个话题!以下是一些很想在现场听的讲座。

  • 使用 Spring 解决大数据复杂性,由 Mark Fisher 和 Mark Pollack 主讲。这场讲座还需要介绍吗?Spring XD 负责人 Mark Pollack(Spring 核心贡献者,Spring AMQP 联合创始人,Spring.NET 创始人,Spring Data 和 Spring Data for Hadoop 负责人)和 Mark Fisher(Spring 核心贡献者,Spring Integration 创始人,Spring AMQP 联合创始人)将介绍 Spring XD,这是当今构建以大数据为中心的应用程序的最强大方式。
  • 构建您自己的私有 Cloud Foundry,由出色的 Matt Stine 主讲。Matt 将介绍如何使用 BOSH 搭建您自己的本地 Cloud Foundry 实例。Matt 是一位出色的演讲者,一位杰出的技术专家,我迫不及待想听这场讲座。
  • 分布式规则引擎和 CEP,由 John Davies 主讲。John 是 C24 的首席执行官,拥有一些令人难以置信的企业集成实战经验。他也是一位出色的演讲者。
  • RabbitMQ 是新的王者,由 Jan Machacek 和 RabbitMQ 开发者倡导者 Alvaro Videla 主讲。Jan 是资深的 Spring 专家和分布式系统领域的专家,而 Alvaro 是 Pivotal 的 RabbitMQ 开发者倡导者(就像我是 Pivotal 的 Spring 开发者倡导者一样……)。他们俩都很出色,我相信这场讲座会非常精彩。
  • 您的数据,您的搜索,Elasticsearch ,由 Costin Leau 主讲。Costin 曾参与过很多工作,包括最初的 Spring Cache 与 Spring 核心的集成、Spring Data GemFire、Spring Data 本身、Spring DM server 中的 OSGi 支持(多年前)等等。他现在正致力于 Elasticsearch,我迫不及待想听听他的观点。Costin 非常擅长将复杂的主题提炼出精髓。

今年我将有四场讲座(与杰出的合作讲师一起!)。我和 Andy Piper 将主讲 构建 Spring 和 Cloud Foundry 支持的应用程序。我和 Roy Clarkson 将主讲使用 Spring 和 REST 连接应用程序,我和 Kevin Nilson 将主讲使用 Spring 和 profiles 构建适应性应用程序,我和 Phil Webb 将主讲 如何改进您的 Java 配置肌肉记忆

我期待在 SpringOne2GX 见到大家!如果您在附近,请在 Twitter (@starbuxman) 上联系我,我们一起聊聊 Spring

现在,进入本周综述! 希望这些内容能在 SpringOne2GX 之前满足您的需求! :)

  1. Spring Scala 负责人 Arjen Poutsma 刚刚发布了 Spring Scala 1.0.0.RC1。新版本是通往 1.0 版本的发布周期中的第一个候选版本,所以一定要看看!
  2. 加入我们 Pivotal Labs 的朋友,观看 David Frank 在 9 月 5 日展示如何使用 Pivotal Tracker 提升敏捷性
  3. 加入 Phil Webb,深入了解 Spring 中最新、最热门的项目之一 - 9 月 26 日的 Spring Boot
  4. Jan Stenberg 写了一篇不错的文章,介绍了 Russ Miles 的 在 Spring 中使用的 Life Preserver 模式。这篇文章代码较少,但您可以查看原始演示文稿以获取详细信息
  5. JavaBeat 博客有一篇非常详细的文章,介绍了如何使用 Spring 的 @Transactional 注解
  6. Eugen Dvorkin 写了一篇不错的文章,介绍了如何将 Storm、Groovy、CEP 引擎和 Spring 结合使用。这真的很酷,尽管代码不多。不过我也想知道是否可以使用 Spring XD 以更简单的方式实现这一点。
  7. Spring Web 专家 Arjen Poutsma,同时也是原始 RestTemplate 的作者,一直在努力开发将在 Spring 4 中包含的异步 RestTemplate。看起来太棒了
  8. Luis Miguel Gracia Luis 写了一篇不错的文章,介绍了自 Spring 团队成为 Pivotal 的一部分以来为 Spring 开发者带来的一些很棒的新内容,包括 Spring XD、Spring Boot、Spring Loaded 和 Spring REST Shell。这篇文章是西班牙语的,但 Google 翻译做得相当不错。
  9. Rajkumar Singh 写了一篇不错的文章 - Apache Hadoop and Spring Data : Configuring mapreduce Job - 介绍了 Spring for Apache Hadoop。很棒的文章!
  10. Bluesoft 博客发表了关于将 Angular.js 与 Spring MVC 结合使用构建登录对话框系列的第二篇文章。进展不错…
  11. Technicalpractical 博客有一篇文章,使用 Spring 将 Model 显示为 JSON 或 XML。这篇文章很好地介绍了如何使用 Spring MVC 2.5 时代的 API 构建 JSON 视图,但我希望您能查看一些关于使用 Spring 构建以 JSON 为中心的 REST 服务的最新介绍这里有一个(更)简单的例子

Spring Security 3.2.0.RC1 发布

发布 | Rob Winch | 2013 年 8 月 31 日 | ...

Spring Security 3.2.0.RC1 现在可以在 SpringSource 仓库 http://repo.springsource.org 获取。请参阅此处以获取通过 Maven 解析这些构件的快速教程。

此版本包含大量更新和修复。亮点包括

  • 完善 Spring Security Java 配置
    • 启用多种认证机制(例如 HTTP Basic 和表单登录)时,使用内容协商确定如何提示用户进行认证
    • AbstractSecurityWebApplicationInitializer 允许直接注册 Java 配置
    • 修复了大量 Bug
  • CSRF 防护并自动集成 Spring Web MVC 的 jsp 标签
  • 自动缓存控制支持
  • 防御点击劫持攻击
  • 支持HTTP Strict Transport Security,以减少中间人攻击
  • 示例包含 pom.xml,因此可以作为 Maven 项目导入
  • 用于匹配带有内容协商请求的MediaTypeRequestMatcher
  • 超过十个 Java 配置示例已集成到 samples 目录中
  • 三个新指南,引导用户了解示例并提供如何执行特定任务的详细说明。更多此类指南将在未来的版本中推出
  • 有关此版本的更多详细信息,请参阅Spring Security 3.2.0.RC1 预览

    SpringOne2GX

    要了解 Spring Security 3.2 中的所有新功能,请参加我于 2013 年 9 月 9 日至 12 日在 SpringOne2GX 上的Spring Security 3.2 入门讲座。如果您还没有购买门票,请立即购买,以免为时已晚!

    更新日志 | 下载 | 参考手册 | 指南 | 常见问题

    网络研讨会回放:Spring 与 Cucumber 自动化(2013 年 8 月)

    新闻 | Pieter Humphrey | 2013 年 8 月 30 日 | ...

    了解 Spring 和 Cucumber 如何集成以简化测试自动化。Cucumber 是一个行为驱动开发 (BDD) 框架,是对 TDD (测试驱动开发) 的完善。其目的是使开发者能够用普通文本编写高级用例,这些用例可以由非技术利益相关者验证,并将其转化为可执行测试,用一种称为 Gherkin 的语言编写。使用 Spring、Cucumber、WebDriver2,Hemant Joshi 将向您展示如何优雅而愉快地使用 Spring & Cucumber 进行 BDD。

    本周 Spring - 2013 年 8 月 27 日

    工程 | Josh Long | 2013 年 8 月 27 日 | ...

    欢迎回到本周 Spring 的新一期。像往常一样,我们有很多内容要分享!Spring Security 及其负责人 Rob Winch 在本周综述中占据了重要篇幅!所以,向 Rob Winch 致敬

    1. Spring Security 负责人 Rob Winch 写了一篇文章,介绍了 Spring Security 中针对跨站请求伪造(或称CSRF的一些新增的、智能且便捷的防护措施。
    2. Rob 还写了另一篇精彩的博文,展示了 Spring Security 对安全头部的新支持
    3. Rob 还非常慷慨地将这些新功能集成到了Spring REST 堆栈代码库中,您可以在一个完整的、集成的 Spring REST 服务中看到它们的应用。要查看这些变更,以及 Spring Security 和 Spring Security OAuth,所有都使用 Java 配置集成,请查看oauth 模块
    4. Reactor 负责人 Jonathan Brisbin 宣布Reactor 1.0.0.M2 现已可用。新版本看起来非常令人兴奋!Jon 的文章写道:“这第二个里程碑版本包含大量错误修复和一些真正令人兴奋的新功能。Reactor 现在包含一个 Processor 抽象,它是一个基于LMAX Disruptor RingBuffer 的高度优化的任务处理器。它使用 Reactor 中的通用抽象来配置 RingBuffer,并允许您使用 Reactor 的通用 API,而不是 Disruptor 特定的 API。它在设计上也跳过了 Reactor 提供的 Selector 匹配和动态 Consumer 分配,以便榨取其能达到的最大吞吐量。在 MacBook Pro 上的非正式基准测试显示,该 Processor 每秒可以通过管道处理大约 1 亿个事件。没错,您没看错:每秒 1 亿个!”
    5. Hyperic、Cloud Foundry、Spring 和 Spring Data 大师 Jennifer Hickey 宣布了 Spring Data Redis 项目的最新版本。新版本包括对键过期命令的毫秒级精度支持、连接失败时消息监听器的重新订阅、在 RedisMapRedisProperties 中完整实现 ConcurrentMap 契约
    6. Spring Batch 负责人 Michael Minella 宣布Spring Batch 3.0M1 已经发布!此版本标志着实现JSR-352 Java Batch 规范的第一步,以及其他一些改进。
    7. 立即注册参加 8 月 29 日的网络研讨会:使用模块化模式和 Spring驯服耦合与内聚怪物,主讲人 Param Rengaiah。
    8. 加入我们 Pivotal Labs 的朋友,观看 David Frank 在 9 月 5 日展示如何使用 Pivotal Tracker 提升敏捷性
    9. Spring Security 负责人 Rob Winch 发推文说:“#Gradle 让使用 #SpringFramework 3 构建 #SpringSecurity 并使用 #Spring 3/4 运行测试变得异常简单”,并链接到这个精彩的例子。严格来说,这并不是一篇与 Spring 直接相关的文章,但对于那些也使用 Gradle 的人来说,这是一个非常优雅的 Gradle 构建的绝佳示例,就像我们在 SpringSource 所做的那样。
    10. Spring Security 负责人 Rob Winch(嘿,这家伙可真忙!)还宣布了 Spring Security LDAP 的最新版本
    11. 我们的朋友 Xavier Padró 回来了,这次带来了一篇介绍如何在使用 Spring 的 JmsTemplate 接收消息时使用资源本地 JMS 事务的文章。
    12. Patrick Grimard 写了一篇不错的文章,介绍了如何将 Yeoman Backbone 与 Spring Web 应用程序集成,以及如何通过使用 Tuckey 的 UrlRewriteFilter 来绕过他在资源解析方面遇到的一些问题。我喜欢 UrlRewriteFilter。话虽如此,但我认为(但尚未测试……)Patrick 可以使用 Spring MVC 资源处理支持来实现同样的事情,就像他在代码示例中覆盖 public void addResourceHandlers(ResourceHandlerRegistry registry) 配置方法时开始做的那样。也许我错了,无论如何,这是一篇很棒的文章!
    13. SpringSource 发布了第三季度的新的培训课程,请查看以下培训日程:Spring 核心Spring 企业集成Spring Web

    Reactor 1.0.0.M2 – JVM 上响应式快速数据应用程序的基础

    工程 | Jon Brisbin | 2013 年 8 月 27 日 | ...

    我很高兴宣布 Reactor 迈向 1.0 版本的第二个里程碑发布!Reactor 1.0.0.M2 的 Maven 构件已在常规的里程碑仓库中提供。

    什么是 Reactor?

    Reactor 是一个用于在 JVM 上构建高吞吐量、异步、响应式应用程序的基础框架。它提供用于事件路由的 Selector 样式主题匹配、动态 Consumer 分配、一个超快速的任务处理器,以及用于异步处理数据和协调异步任务的响应式 Stream 和 Promise API。它通过提供语言扩展来支持 Groovy 语言,让用 Groovy 编写 Reactor 应用程序变得非常酷!它还具有易于使用的 Spring 支持,可以自动将带注解的 POJO 连接到 Reactor。

    此版本有什么新内容?

    这第二个里程碑版本包含大量错误修复和一些真正令人兴奋的新功能。Reactor 现在包含一个 Processor 抽象,它是一个基于LMAX Disruptor RingBuffer 的高度优化的任务处理器。它使用 Reactor 中的通用抽象来配置 RingBuffer,并允许您使用 Reactor 的通用 API,而不是 Disruptor 特定的 API。它在设计上也跳过了 Reactor 提供的 Selector 匹配和动态 Consumer 分配,以便榨取其能达到的最大吞吐量。在 MacBook Pro 上的非正式基准测试显示,该 Processor 每秒可以通过管道处理大约 1 亿个事件。没错,您没看错:每秒 100 百万

    1.0.0.M2 版本还在 Reactor API 中包含了一个虽小但重要的新功能,它优化了 Reactor 中的事件发布,以获得约 30-50% 的更高吞吐量。虽然它不适合所有情况,因为它会从 Reactor 中准备一个优化的 Consumer 列表,但对于额外增加的每秒 1000 万事件吞吐量来说,这是一个非常棒的新功能。

    优化发布

    Reactor 的强大之处之一是 Selector 匹配主题(类似)的发布/订阅功能。它允许您使用主题、匿名对象、可分配类型层次结构、URI 路径匹配或正则表达式(或者如果您实现自己的领域特定 Selector,则可以使用任何其他类型的 Selector 匹配)轻松地为事件分配处理器。但许多应用程序可以在启动时分配其处理器,这意味着指向这些 Consumer 的路径可以针对高效事件发布进行优化。新的 Reactor 方法 prepare(Object) 允许您为某个键预先选择 Consumer。它返回一个 Consumer 本身,事件发布者可以使用它来高效地通知新事件。

    // Create Environment in which Reactors operate
    Environment env = new Environment();
    Reactor reactor = Reactors.reactor().env(env).get();
    
    reactor.on($("say.hello"), new Consumer<Event<String>>() {
    	public void accept(Event<String> ev) {
    		System.out.println("Hello " + ev.getData() + "!");
    	}
    });
    
    Consumer<Event<String>> sayHello = reactor.prepare("say.hello");
    for(String name : listOfNames) {
    	sayHello.accept(name);
    }
    

    RingBuffer 任务处理器

    Reactor 1.0.0.M2 包括 Processor 抽象。它是一个简单的任务处理器,由 LMAX Disruptor RingBuffer 提供支持,旨在将其无缝集成到 Reactor 中使用的响应式 API 中,因此它使用 Supplier 和 Consumer 等通用抽象。一个完全配置好的 Processor 可以通过一个表达式创建,而使用 Java 8 lambda 则更加简洁

    Processor<Message> proc = new ProcessorSpec<Message>()
    	.dataSupplier({ return new Message(); })
    	.consume({ msg -> // handle the updated Message object…

    Spring LDAP 1.3.2 发布

    发布 | Rob Winch | 2013 年 8 月 26 日 | ...

    我非常高兴地宣布 Spring LDAP 1.3.2 版本发布。此版本包含大量错误修复,将为 Spring LDAP 2.0 版本的发布奠定坚实的基础。

    我要感谢来自 261 Consulting 的 Mattias Arthursson 为此版本付出的所有辛勤工作。

    Spring Batch 3.0 里程碑 1 发布

    工程 | Michael Minella | 2013 年 8 月 23 日 | ...

    今天,我们很高兴宣布 Spring Batch 3.0 的第一个里程碑版本(下载)。通过此版本,我们迈出了实现 JSR-352 Java Batch 规范的第一步。Spring Batch 是一个轻量级、全面的框架,用于开发健壮的批处理应用程序。

    JSR-352

    JSR-352 被认为是 Java 平台的批处理标准化规范。作为标准化的一部分,该 JSR 包括三个主要部分

    • 用于配置 Job 的基于 XML 的 DSL
    • 用于创建 Job 相关组件(读取器/写入器等)的 API
    • 支持类和概念的 API 及行为描述

    Spring 在对此规范的贡献上投入了大量时间和资源。我们通过 JCP 与其他行业专家的协作,JSR-352 验证了 Spring Batch 在过去五年中在无数生产环境中实现并经过实战考验的批处理模式是构建关键任务批处理应用程序的最佳方法。

    里程碑 1 中的功能

    此版本是 Spring Batch 符合 JSR 的第一步。在 JSR-352 TCK 的 155 个 SE 测试中,此版本通过了 70 个。此版本中实现的特定功能包括

    • JobOperator 实现
    • 通过 XML 进行基本 Job 配置
    • batch.xml 支持

    JobOperator

    JSR 定义了一个 JobOperator 接口,它是 Spring Batch 的 JobOperatorJobExplorer 接口的组合。对于该规范,此接口作为批处理应用程序的入口点,用于与 Job 本身进行交互(启动/停止/重启等)以及与 Job 仓库进行交互(例如,提供查询先前运行的 JobExecution 的能力)。因此,JobOperator 需要提供开箱即用的服务级别。JsrJobOperatorjavax.batch.operations.JobOperator 的 Spring 实现)引导启动一个类似于 @EnableBatchProcessing 的 Spring Context。开箱即用,它包括 JobRepositoryJobLauncherJobOperatorJobExplorerDataSourceTransactionManagerParametersConverterJobRegistryPlaceholderPropertiesConfigurer。所有这些都可以在启动或重新启动 Job 时通过提供的 Context 覆盖默认 bean 来在运行时进行覆盖。默认情况下,JobRepository 在内存配置中利用 HSQLDB。

    根据 JSR,启动一个 Job 实际上非常简单

    JobOperator jobOperator = BatchRuntime.getJobOperator();
    JobExecution jobExecution = jobOperator.start("jsrJob", new Properties());

    上面两行代码将引导启动先前定义的基础 Context(这只发生一次),然后从 /META-INF 加载 batch.xml 文件(如果存在),以及在 /META-INF/batch-jobs 中 jsrJob.xml 定义的 Context。jsrJob.xml 可以是两种配置之一。它可以是标准的 Spring Context 配置,将任何批处理构件定义为 Spring Bean,并通过 JSR-352 DSL 定义 Job;或者它可以是 JSR 定义的 Job 定义。根据 JSR-352,jsrJob.xml Context 中只能定义一个 Job。JsrJobOperator 的其余功能实际上是对现有 JobOperatorJobExplorer 功能的直接封装(因此它们被包含在基础应用程序 Context 中)。

    通过 XML 进行基本 Job 配置

    JSR-352 定义了一个基于 XML 的 DSL,任何 Spring Batch 用户都会立即感到熟悉。它由 Jobs、Steps、Readers 和 Writers 组成,Spring Batch 命名空间中的大多数概念都在 JSR-352 中有所体现。作为此版本的一部分,开发者将能够使用 JSR 定义的 DSL 配置基本 Job。基本 Job 包括以下内容

    • <job>
    • <step>
    • <chunk>
    • <batchlet>
    • <reader>
    • <processor>
    • <writer>
    • <decision>
    • <listeners>/<listener>
    • <properties>/<property>
    • <skippable-exception-classes> 及相关子元素
    • <retryable-exception-classes> 及相关子元素
    • <checkpoint-algorithm>
    • <next>/<end>//<code><fail>

    使用 JSR,通过 Spring Batch DSL 配置的批处理 Job 看起来像这样

    
    <job id="data" xmlns="http://www.springframework.org/schema/batch">
        <step id="import" next="report">
            <tasklet>
                <chunk commit-interval="100"
                       reader="itemReader"
                       writer="dataWriter" />
            </tasklet>
        </step>
        <step id="report…

    获取 Spring 电子报

    订阅 Spring 电子报,保持联系

    订阅