Spring Batch 3.0 Milestone 1 发布

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

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

JSR-352

JSR-352 被定位为 Java 平台的批处理标准化。作为该标准化的组成部分,此 JSR 包含了三个主要部分:

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

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

Milestone 1 中的特性

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

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

JobOperator

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

根据 JSR,启动作业实际上非常简单:

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

上述两行将引导先前定义的基线上下文(这仅发生一次),然后从 /META-INF 加载 batch.xml 文件(如果存在),并加载 /META-INF/batch-jobs 中 jsrJob.xml 定义的上下文。jsrJob.xml 可以是两种配置之一。它可以是标准的 Spring 上下文配置,将任何批处理工件定义为 Spring Bean,并通过 JSR-352 DSL 定义作业;或者它可以仅仅是 JSR 定义的作业定义。根据 JSR-352,jsrJob.xml 上下文中只能定义一个作业。JsrJobOperator 的其余功能几乎是直接包装现有的 JobOperatorJobExplorer 的功能(因此它们包含在基线应用程序上下文中)。

通过 XML 进行基本的作业配置

JSR-352 定义了一个基于 XML 的 DSL,任何 Spring Batch 用户都会立即感到熟悉。它由作业、步骤、读取器和写入器组成,Spring Batch 命名空间中的大部分概念都在 JSR-352 中得到了涵盖。在此版本中,开发人员将能够使用 JSR 定义的 DSL 配置基本作业。基本作业包括以下内容:

  • <job>
  • <step>
  • <chunk>
  • <batchlet>
  • <reader>
  • <processor>
  • <writer>
  • <decision>
  • <listeners>/<listener>
  • <properties>/<property>
  • <skippable-exception-classes> 及其子节点
  • <retryable-exception-classes> 及其子节点
  • <checkpoint-algorithm>
  • <next>/<end>//

使用 JSR,一个批处理作业通过 Spring Batch DSL 看起来是这样的:


<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 Security 3.2.0.RC1 亮点:安全标头

工程 | Rob Winch | 2013年8月23日 | ...

更新

注意 本博文已不再维护。有关 Spring Security 的 Headers 的最新信息,请参阅 Headers 文档

原文

这是我关于 Spring Security 3.2.0.RC1 系列的第二篇博文。我的 上一篇博文 讨论了 Spring Security 的 CSRF 防护。在这篇文章中,我们将讨论如何使用 Spring Security 添加各种响应标头来帮助保护您的应用程序。

安全标头

Spring Security 3.2.0.RC1 中的许多新功能都是通过向响应添加标头来实现的。这些功能的基础是 Marten Deinum 的辛勤工作。如果这个名字听起来很熟悉,可能是因为他在 Spring 论坛上发布的 10K+ 帖子中的一个帮助过你。

如果您使用 XML 配置,可以使用 Spring Security 的 元素,不带任何子元素,来将所有默认标头添加到响应中。

<http ...>
    ...
    <headers />
</http>

如果您使用 Spring Security 的 Java 配置,默认会添加所有默认安全标头。可以使用下面的 Java 配置禁用它们:

```xml @EnableWebSecurity @Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override protected void configure(HttpSecurity http) throws Exception { http .headers().disable() ...; } }


<p>The remainder of this post will discuss each of the default headers in more detail:</p>
<ul>
<li><a href="#cache-control">Cache Control</a></li>
<li><a href="#content-type-options">Content Type Options</a></li>
<li><a href="#hsts">HTTP Strict Transport Security</a…

Spring Security 3.2.0.RC1 亮点:CSRF 保护

工程 | Rob Winch | 2013 年 8 月 21 日 | ...

[callout title=更新]

此博客文章不再维护。请参阅CSRF 文档以获取有关 Spring Security 和 CSRF 保护的最新信息。

[/callout]

周一,我宣布了Spring Security 3.2.0.RC1 的发布。这是关于 Spring Security 3.2.0.RC1 新功能的两部分博客系列的第一部分。

在第一篇文章中,我将介绍 Spring Security 的 CSRF 支持。在下一篇文章中,我将介绍添加的各种安全标头。

CSRF 攻击

Spring Security 已添加针对跨站请求伪造 (CSRF) 攻击的保护。太好了,但什么是 CSRF 攻击,Spring Security 如何保护我免受其害?让我们通过一个具体的例子来更好地了解……

Spring Security 3.2.0.RC1 发布 (2013 年 8 月)

工程 | Rob Winch | 2013 年 8 月 19 日 | ...

Spring Security 3.2.0.RC1 现已可从 SpringSource 仓库获取,地址为 http://repo.springsource.org。请在此处 查看 通过 Maven 解析这些制品的操作教程。

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

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

    SpringOne2GX

    要了解 Spring Security 3.2 中的所有新特性,请参加我于 2013 年 9 月 9 日至 12 日在 SpringOne2GX 举办的“Spring Security 3.2 入门”演示。如果您还没有购票,请尽快购买!

    变更日志 | 下载 | 参考手册 | 指南 | FAQ

    本周 Spring - 2013 年 8 月 13 日

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

    欢迎回到“本周 Spring”的又一期。照例,我们有很多内容要介绍,所以让我们开始吧!

    1. “Java 中的做法”博客有一篇不错的文章,介绍了如何使用 Spring Security 3 设置 Siteminder 预身份验证
    2. SpringOne2GX 2013 的又一个很棒的会议环节刚刚加入到 SpringOne2GX 2013 的阵容中,实时分析与 Spring。本次讲座介绍了一个使用Project Reactor(一个JVM 异步应用程序的基础)的用例。
    3. Andy Clement 刚刚发布了 AspectJ 的新版本,1.8.0.M1,它将用于 Spring 4 并支持 Java 8。它可以通过 SpringSource Maven 存储库作为 1.8.0.M1 获取。它也包含在今天的Eclipse 4.3 版 AJDT中。
    4. GoPivotal 博客深入探讨了Apache Tomcat 8。绝对值得一看!
    5. Eberhard Wolff 制作了一个非常棒的视频,介绍了如何使用最近发布的Spring Boot。干得好,Eberhard!(一如既往)
    6. 我们的朋友 Petri Kainulainen 撰写了一篇非常棒的文章,介绍了Spring MVC REST API 的单元测试
    7. “成为 Java 开发者”博客有一篇代码丰富的文章,介绍了如何使用 Spring MVC进行文件上传。干得好!
    8. 来自“Matthew's Thoughts!”博客的这篇文章解释了一个简单的 Spring REST 入门项目,该项目演示了如何使用常规的Spring Security 为 Spring MVC 驱动的 REST 服务添加基于用户名和密码的身份验证
    9. “Code with Zen Mind”博客有一系列关于构建和测试 Spring MVC 应用程序的精彩文章。第一篇文章介绍了如何设置一个测试驱动的项目。第二篇文章演示了如何进行重构以及如何引入新的测试用例。第三篇文章演示了如何利用前两篇文章建立的测试来应对重大重构(被测试服务的实现发生了变化)。非常有见地!
    10. 来自“public static void blog()”博客的这篇文章介绍了 Spring 的日志分层工作原理。这篇文章是用 Google 翻译坚持认为是斯洛伐克语写的,然而,翻译得相当好,而且——如果我们说实话——图表本身就非常有解释性!好东西。看一看,如果可能的话,读一读。
    11. Cloud Foundry for Eclipse 的 1.5 版本,它支持将应用程序推送到 Pivotal Cloud Foundry 组织和空间,使用新的 Cloud Foundry 服务,以及从 Spring Tool Suite 增量更新应用程序。新集成可以从 STS dashboard 安装,或使用 STS 的“帮助”>“安装新软件”菜单中的更新站点进行安装。

    本周 Spring - 2013 年 8 月 6 日

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

    欢迎回到“本周 Spring”的又一期。8 月 1 日,我庆祝了我在SpringSource工作的第三年。我继续享受着我生命中最精彩的旅程,其中很大一部分是我与你们——最棒的社区——的互动。感谢你们,各位!

    你预订SpringOne2GX的门票了吗?今年的展会很特别。在我作为 Spring 开发者倡导者的工作中,我会在世界各地参加许多会议。问任何一个有活力的开发者,他们都会证实大数据(和 Hadoop)、响应式 Web 应用程序、REST、移动应用程序开发和云计算是当今炙手可热的话题。Pivotal 和 Spring 支持当今的开发者,而 SpringOne2GX 的议程在我看来是当今开发者内容的完美结合。查看议程。我们最近添加了关于大数据的讲座,以及关于使用 OAuth 进行 REST 服务安全的讲座。这将是我们以Pivotal的名义举办的第一次展会,也是唯一一个你可以与 SpringSource 和社区中你关心技术开发人员交流的地方。如你所知,我们刚刚宣布了我们的 Cloud Foundry 会议Platform,SpringOne2GX 全程通票持有人可以免费注册参加该展会——它与 SpringOne2GX 在同一地点举办,只是早两天!如果我一年只能支付一个展会的费用,那一定会是这个展会。快点,早鸟价将于本周五到期!

    1. 重要新闻:Phil Webb 和 Dr. David Syer 已经发布了 Spring Boot,它简化了 Spring 应用程序的开发。Spring Boot 在 Spring 之上提供了一个有主见的层,从而可以非常简单地在最少的麻烦中启动并运行应用程序。说真的,这东西会让你大吃一惊。在你阅读这篇简短而精彩的文章之前,不要再往下看了!试试看,并确保告诉我们你的体验
    2. Spring Framework 3.2.4 维护版本现已可用,其中包含一个重要的 SpringOXM 安全修复。
    3. Spring Data Redis 负责人兼极客 Jennifer Hickey 刚刚宣布了两款 Spring Data 版本的可用性。Spring Data Redis 1.1.M2,具有大量新功能,包括增强的数据管道、Redis 2.6 脚本等。Spring Data Redis 1.0.6 也已发布,并包含错误修复和小型改进。
    4. Spring Mobile 和 Android 负责人 Roy Clarkson 刚刚宣布了Spring Mobile 1.1.0.RC1,它改进了 Spring Mobile 中的设备检测和视图解析。Roy 还宣布了 Spring Mobile 稳定线的最新版本 1.0.2,其中包含类似的改进,其中一些已向后移植。
    5. Spring Data 极客 Oliver Gierke 刚刚宣布 Spring Data Babbage 的最终候选版本现已可用。此版本以查尔斯·巴贝奇命名。此版本支持 MongoDB 聚合框架,并改进了多态查询的执行,支持在手动定义的 JPA 查询中使用 SpEL 表达式,改进了使用 @IdClass 的实体处理,为 Neo4j 存储库提供了一个 countBy(..) 方法,以及更多
    6. 网络研讨会没有 Lambda 的函数式编程使用 Cucumber 进行 Spring 自动化的回放现已在线提供。请务必观看!
    7. 几周前,我们的朋友 Johnathan Mark Smith 制作了一个介绍如何使用Spring Data MongoDB 和 Java 配置的视频。看看吧!而且,如果你在制作很棒的视频,请随时分享。我也很乐意在本周 Spring 上发布它们!
    8. 当我看到Reactor项目负责人 Jonathan Brisbin 的推文时,我笑了,其中他说:“处理器吞吐量:笔记本电脑上每秒 9000 万次操作。1 个线程 + @LMAX Disruptor。不是 #fastdata,是 #uberfastdata”,然后链接到一个代码中的测试用例。毋庸置疑,Reactor将大有作为!(当然,我们将在 SpringOne2GX 上提供更多关于 Reactor 的内容)。
    9. Tomcat 的最新版本,Apache Tomcat 8.0.0-RC1 (alpha),现已可用!有许多新功能。值得注意的是,Tomcat 8 将是第一个支持 JSR 356,WebSockets 的 Tomcat。这是对 Spring 4最近宣布的 WebSocket 支持的完美补充。
    10. Mohan Srihari Kantipudi 撰写了一篇很棒的文章,介绍了Spring 的基本 REST 功能
    11. 我喜欢 Gregor Riegler 关于Spring Loaded的文章,这是开源界保存得最好的秘密。Spring Loaded 是一个 Java 代理,可以让你在工作时重新加载代码(无需重新部署!)。这是一篇非常棒的文章,我希望你也能考虑使用 Spring Loaded。

    Spring Boot – 简化人人都能使用的 Spring

    工程 | Phil Webb | 2013年8月6日 | ...

    (本博文由 Phil WebbDave Syer 联合撰写)。

    我们很高兴地宣布一项名为 Spring Boot 的新项目的第一个里程碑版本发布。

    Spring Boot 旨在让创建基于 Spring、生产级别的应用程序和服务变得简单快捷,尽量减少繁琐操作。它对 Spring 平台采取了一种有主见的(opinionated)方式,以便新老用户能够快速获得他们所需的组件。你可以用它来创建独立的 Java 应用程序,这些应用程序可以使用 'java -jar' 来启动,或者进行更传统的 WAR 部署。我们还提供了一个命令行工具来运行“spring 脚本”。

    该……

    本周 Spring - 2013 年 7 月 30 日

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

    欢迎回到“本周 Spring”的又一期!照例,我们有很多内容要介绍,所以让我们开始吧。别忘了 SpringOne 2GX 2013 的早鸟价将于 8 月 9 日到期,所以请抓紧时间以获得折扣价!

    1. Spring 框架提交者 Rossen Stoyanchev 撰写了一篇很棒的文章,介绍了Spring Framework 4.0 M2 对 WebSocket 消息体系结构的支持
    2. Spring Shell 负责人 Dr. Mark Pollack 宣布Spring Shell 1.0.1.M1刚刚发布。
    3. Spring Batch 2.2.1.RELEASE现已可用。此版本主要是错误修复和文档改进。
    4. 我不知道你是否一直在关注,但我们开始真正充实 SpringOne2GX 2013 的日程安排了!我期待着今年参加和发表演讲。我想看的一个讲座是Thymeleaf:使用自然模板改进你的 Spring 视图层。我预计今年的一年将是非常令人兴奋的一年,我希望你也能与我们一起体验。
    5. 我们最近又添加了一些 SpringOne 的讲座
    6. 我们的朋友 Tobias Flohre 撰写了一篇很棒的文章,比较了 JSR 352 API 与 Spring Batch。Spring Batch 3.0 将在今年秋季的 SpringOne 上完全符合 JSR 352 API,但它是 JSR 的灵感来源——Spring Batch 1.0 于 2008 年发布,并且一直在不断发展。
    7. 想了解更多关于Spring Scala的信息吗?观看 Spring Scala 负责人讲述它在纽约 ScalaDays 的情况
    8. 正如我上周提到的,你也应该关注本周 Cloud Foundry,它有很多很棒的内容,涵盖了上周Pivotal 和 IBM 宣布达成重大合作伙伴关系
    9. Reactor 项目负责人John Brisbin刚刚宣布支持@EnableReactor 注解,用于 Spring Java 配置
    10. 说到Thymeleaf(开源的、支持 Spring MVC、HTML5 和 Tiles 的视图和模板引擎),2.1 版本将具有可参数化的片段。你想测试它们吗?在指定 Maven 仓库兼容的坐标时,尝试使用 2.1.0-SNAPSHOT 版本。
    11. 我们的朋友 Johnathan Mark Smith 又有新作品了,这次是一个关于如何使用Spring Data MongoDB 的视频。绝对值得一看。
    12. 下个月参加一个网络研讨会——使用模块化和 Spring 驯服耦合和内聚问题,主讲人是 Param Rengaiah。

    本周 Spring - 2013 年 7 月 23 日

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

    大家好!请记住,SpringOne 2GX 2013 的早鸟价将于 8 月 9 日到期,所以请抓紧时间以获得折扣价!另外,请务必查看议程,因为新会话已被添加。本周我在OSCON,在美丽的波特兰市与开发人员谈论 Spring 4、REST,并与我在Pivotal的同事一起谈论 Cloud Foundry、大数据等等!如果你想聊天,希望你能来参加我们举办的讲座,并在展览厅的 Pivotal 展位与我们交流!对于 Spring 和 Pivotal 来说,这都是重要的一周。

    1. Pivotal HD 1.0,世界上最快的 Hadoop 发行版,有两个版本——社区版和 Pivotal 单节点版 (VM),一个虚拟机下载。前往 gopivotal.com 并进行试用——社区版可部署多达 50 个节点的集群!
    2. 我们正在庆祝 Project Reactor 的初始里程碑版本——1.0.0M1——它已经Netty 上的 TCP 速度比单独的 Netty 快 300%!当集成到关键的 Spring 技术中时,Fast Data 的可能性将令人难以置信。祝贺Jon Brisbin
    3. Spring Data Arora 服务版本 2 可供下载
    4. Martin Lippert 发表了一篇优秀的博客,介绍了Spring Tool Suite 3.3.0 中提供的注解和 Java 配置支持。JavaConfig 作为 XML 替代方案在整个 Spring 生态系统中的支持几乎已无处不在。
    5. 加入 Hemant Joshi,在 2013 年 7 月 30 日的网络研讨会上,他将介绍如何使用 Spring 和 Cucumber BDD 测试框架
    6. 渴望 Hadoop?加入我们的网络研讨会系列——“你可以用 Hadoop 做什么”,每月第一个星期四举行。8 月 1 日的第一次网络研讨会将提供关于 Pivotal HD 单节点 (VM) 中包含的功能和教程的深入细节。
    7. 我的朋友Andy Piper (@andypiper)收集了一份很棒的Cloud Foundry摘要,名为本周 Cloud Foundry。我强烈推荐!他刚开始做,而且做得非常出色!
    8. Zenika 博客有一篇非常棒的文章,介绍了如何使用Swagger 为 REST API 编写文档,你可以透明地将其叠加在你的 Spring MVC API 之上
    9. Matt Stine 还有一篇很棒的文章,介绍了Spring、持续集成和 CloudFoundry
    10. JavaCode Geeks 博客有一篇很棒的文章,介绍了如何为 REST API 添加验证
    11. Pivotal 博客有一篇非常棒的文章,比较了 Tomcat 和 Pivotal 的 tcServer,tcServer 是我们支持和增强部署的 Tomcat 的二进制兼容发行版。
    12. 同样在Pivotal博客上,有一篇精彩的文章介绍了Spring Data GemFire(和 GemFire)如何真正提高应用程序的性能
    13. Xavier Padró 的文章对 Spring 的消息传递进行了非常好的介绍
    14. 本周在 OSCON,我在会议的所有公告板和入口门上都看到了关于inBloom主办的黑客马拉松的通知。inBloom 是一家非营利性数据和内容服务公司,致力于支持学区为儿童、教师和家长实施出色的个性化学习工具。inBloom 赞助了 OSCON 为期 2 天的黑客马拉松,以开发其开源内容服务。查看项目代码!我非常喜欢与这些优秀的人见面,并鼓励任何 Spring 极客伸出援手做出贡献!

    Spring Framework 4.0 M2:WebSocket 消息体系结构

    工程 | Rossen Stoyanchev | 2013 年 7 月 24 日 | ...

    正如我之前写过的,WebSocket API 仅仅是 WebSocket 类型消息应用程序的起点。许多实际的挑战仍然存在。正如一位 Tomcat 邮件列表用户最近提到的

    在我看来,WebSockets 似乎仍然不是真正“生产就绪”的(我并不是指 Tomcat 实现本身,而是泛泛而言)……IE 中原生的 WebSockets 功能仅自 IE-10 起可用,而那些允许其在较低 IE 版本中工作的解决方案有点“不稳定”(例如,依赖于通过 Adobe 的 FlashPlayer 进行重定向)。(我们的大多数客户都是大中型企业,他们不会为了让我们高兴而更新他们的浏览器,也不会为了让我们高兴而打开防火墙上的特殊端口)。

    获取 Spring 新闻通讯

    通过 Spring 新闻通讯保持联系

    订阅

    领先一步

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

    了解更多

    获得支持

    Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

    了解更多

    即将举行的活动

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

    查看所有