Spring Integration 4.0 发布
我们很高兴宣布 Spring Integration 4.0.0.RELEASE 版本现已发布。
构建物现已在 Spring 仓库 (repo.spring.io/release
) 和 Maven Central 中提供。
新特性已在 Milestone 4 和 Release Candidate 公告中进行了深入介绍(包括 Spring Boot 示例),但总而言之
- 需要 Spring Framework 4.0.3 或更高版本
- 极大地扩展了用于配置集成流的注解支持,为扩展仓库中正在进行的 Java DSL 奠定了基础
- 新的端点等等...
有关自候选版本以来的更改,请参阅 GA 版本说明…金
本周 Spring - 2014 年 4 月 29 日
欢迎阅读最新一期的《本周 Spring》!上周我在印度班加罗尔度过了一段美好的时光,昨天我应极受欢迎的 Devoxx 大会创始人 Stephan Janssen 的邀请,快速访问了比利时 Java 用户组,在那里我和一些热情洋溢的当地朋友以及我的朋友、Spring framework committer Stéphane Nicoll 一起度过了一段时光。当然,整个活动的视频很快也会在 Parleys 上发布!
让我们直接开始吧!
- Spring Social 的联合创始人兼负责人 Craig Walls 刚刚宣布了期待已久的 Spring Social 1.1.0 版本!这个新版本太棒了!如果您过去一年半一直在关注预发布版本,就会知道在如何轻松暴露 Spring Social 的 Java 配置方面进行了一些深入的重新思考。最终版本既简洁又通用。我非常高兴看到这一点,并将开始相应地更新我各种由 Spring Social 提供支持的 OAuth 客户端!Craig,干得非常漂亮!
- 您看到了新的 “次要” Spring Boot 版本 1.0.2 吗?我加引号是因为,对于 Spring Boot,即使是次要版本也很有料!Syer 博士宣布了该版本,并特别指出了(除此之外)全新的
@IntegrationTest
注解。太棒了!(现在请允许我去更新我的 Boot 项目...) - 明天,即 4 月 30 日,加入我与来自 New Relic 的 Ashley Puls,我们将追踪和诊断一个 Javascript(前端)和 Java/Spring(后端)应用程序。
- Spring Integration 即将迎来一个令人难以置信的新版本——完全支持注解和 Java 配置 + 部分 Spring Boot 支持!通过 4.0,您将能够构建无需 XML 的集成应用程序。项目负责人 Gary Russell 将在 5 月 13 日的网络研讨会《Spring Integration 4.0,新前沿》中带您了解所有新特性。
- Spring Data Neo4j 负责人 Michael Hunger 和我将于 5 月 20 日举办网络研讨会,介绍 Spring Data Neo4j 3.0 和 Neo4j 2.0 中的新功能。
- 继续 Project Sagan 系列,Spring framework 大师 Brian Clozel 刚刚撰写了一篇非常棒的文章,介绍了 Project Sagan 如何处理客户端 JavaScript。这篇文章精彩地展示了现代客户端应用程序如何使用
npm
、grunt
和gulp
。最棒的是?内容以视频形式呈现!完美! - DISID 成为 Spring Roo 项目的主要贡献者!看看我朋友 Pieter Humphrey 关于 Spring Roo 未来走向的精彩文章。
- 在 SpringOne2GX 2013 大会上,与 Chris Richardson 一起度过 90 分钟,他将讨论 Java、Scala 和 Javascript 中的 Future。不,我们不是指产品路线图。看看他题为《Future 和 Rx Observable:异步消费 Web 服务的强大抽象》的会话。
- 您还认为 Spring 只是用于依赖注入吗?加入 Mark Secrist,深入了解框架的基础概念,如底层设计模式和构建块——这些都是高度可复用的见解。观看他 SpringOne2GX 2013 会话《超越依赖注入》的重播。
- Xavier Padró 写了一篇不错的文章,介绍了如何使用 Spring Integration 配置 作为 web 服务客户端时的超时设置
- IntelliJ 大师 Andrey Cheptsov 写了一篇精彩的文章,介绍了如何将 Jetbrains 源于的 Kotlin 语言、NoSQL 数据库 MongoDB、Spring Boot 和 PaaS Heroku 结合使用。太棒了!
- Petri Kainulainen 又回来了,这次他写了一篇关于使用 jOOQ(使处理 SQL 更容易)与 Spring 结合处理分页和排序的精彩文章。
- Roger Hughes 写了一篇很酷的文章,介绍了如何使用 Spring 的 Quartz 调度支持来跟踪异常。
- 时间不多了,不要错过 博客上有一些不错的文章。首先值得注意的是这篇文章 关于在 JBoss EAP 6.2 上的旧版本 Spring Integration 中出现的奇怪
ClassNotFoundException
异常 - 第二篇稍微旧一点的文章是关于使用 Spring Integration MQTT 适配器与基于 MQTT 的服务通信。MQTT 是一种轻量级消息协议,是当今许多物联网解决方案的核心。谁知道呢?您的冰箱可能正在使用它!:)
- 想在本地机器上运行一个更接近生产环境的 Hadoop 实例吗?不想运行完整的虚拟机?看看这篇 关于使用 Docker 部署 Pivotal HD Hadoop 发行版的文章!(然后,看看 Spring for Hadoop 和 Spring XD!)
Project Sagan:客户端架构
既然我们对 JavaScript 模块有了更多了解,我们就可以深入研究 Sagan 应用程序的客户端架构了。
注意:如果您还没有阅读之前关于 Sagan 项目的博客文章,您应该知道这是 Spring 的参考应用程序,支撑着本博客和 spring.io 上的所有其他内容。之前的文章 展示了如何运行此应用程序,我们如何实现零停机部署,以及 我们如何将 Sagan 升级以使用最新的 JDK8 特性。
在这篇文章中,我想带您了解 Sagan 应用程序中客户端架构的基础知识
本周 Spring - 2014 年 4 月 22 日
欢迎阅读最新一期的《本周 Spring》!本周我在印度班加罗尔参加印度开发者大会,与开发者们交流(等等...)Spring!我还拜访了班加罗尔电子城的一家大型系统集成商,并与一支庞大的建筑师和工程师团队进行了交流,他们在全球范围内使用 Spring 进行项目开发。印度是一个有趣的地方,因为他们的许多业务都来自寻求帮助应对庞大项目的海外公司。当然,任何有助于更快完成更多工作的东西都备受关注,而 Spring 正是热门之选。不用说,Spring Boot 深受好评!不过,当地美食如此美味,工作之余也能享受!:)
本周有很多网络研讨会和重播——我们有很多内容要介绍,所以让我们开始吧!
- 渴望 Hadoop?准备好一场盛宴吧——Mark Pollack 博士和 XD 团队宣布 Spring XD 1.0.0 M6 现已发布。这个新版本包含了大量新特性,包括支持在 YARN 上运行、DIRT 分布式运行时的 Zookeeper 支持、机器学习算法、改进的 Shell 标签补全、一个基于 Reactor 的 TCP/UDP 源,可以在廉价硬件上达到 100 万+ 事务/秒、默认的 FTP 到 HDFS 作业等等!(不,真的,我们是认真的)。这个版本感觉更像是他们跳过了所有 1.0.x 的里程碑,直接发布了“2.0”版本!
- Reactor 项目负责人 Jon Brisbin 与 Typesafe、Netflix、Twitter 等公司的工程师们一起宣布了 响应式流处理的新通用 API。这具有里程碑意义!
- Spring Data 负责人 Oliver Gierke 刚刚宣布 Spring Data Codd 服务版本 2 现已发布。这个新版本非常重要,一定要全部查看!
- Dave Syer 博士刚刚宣布了 Spring Security OAuth 2.0.0.RC1 版本的发布。这个项目发展得非常快,我很高兴将我的演讲 《Spring REST 技术栈》的代码更新到更简洁、更强大的迭代版本。我已将该分支(仍在更新单元测试)更新为使用 Spring Security 2.0.0.RC1。它是一个可工作的 OAuth 安全的 REST 服务,支持 HTTP 和 HTTPS,可以作为独立应用或传统的
.war
运行,并使用自定义的UserDetailsService
bean 和 Java 8 lambda 表达式。相当不错! - Spring Integration 即将迎来一个令人难以置信的新版本——完全支持注解和 Java 配置 + 部分 Spring Boot 支持!通过 4.0,您将能够构建无需 XML 的集成应用程序。项目负责人 Gary Russell 将在 5 月 13 日的网络研讨会《Spring Integration 4.0,新前沿》中带您了解所有新特性。
- 4 月 30 日,加入我与来自 New Relic 的 Ashley Puls,我们将追踪和诊断一个 Javascript(前端)和 Java/Spring(后端)应用程序。
- Chris Beams 又写了一篇关于 Sagan 项目的精彩文章,这篇是关于迁移到 Java 8 的。看看吧!
- 我最近关于《使用 Spring Boot 构建“Bootiful”应用程序》的演讲重播现已在 我们的 YouTube 频道上提供。
- Spring Security 负责人 Rob Winch 回来了,带来了另一篇关于 Spring MVC 测试与常见第三方项目高级集成的文章。这篇是关于 使用 Geb 测试 Web 应用程序的。
- Spring Data Neo4j 负责人 Michael Hunger 和我将于 5 月 20 日举办网络研讨会,介绍 Spring Data Neo4j 3.0 和 Neo4j 2.0 中的新功能。
- 还在思考搜索?您有机会与我们的前同事兼 Spring committer,现任职于 Elasticsearch 的 Costin Leau 共度 90 分钟:您的数据,您的搜索,Elasticsearch。
- 不要错过 Pivotal 的 Mike Wiesner,他在这次 SpringOne2GX 2013 重播:《应用安全陷阱》中讨论了实用的应用安全(不仅仅是 Spring Security)。
- Groovy 语言负责人 Guillaume LaForge 的史诗级专栏 《Groovy 周刊》进展顺利!总是有些好东西,本周也不例外。如果您喜欢 Groovy(和 Grails)的一切,不妨看看。
- Alexandre Rafalovitch 的这个项目旨在改进 SOLR JavaDocs。这里有很多值得称赞的地方,但我喜欢这个 Spring Boot 示例,它展示了如何将 REST 端点连接到 SOLR 实例。太棒了!
- Fabio Maffioletti 写了一篇非常好的文章,进一步探讨了如何使用 JTA 与 Spring 结合(特别是与 Spring Boot 和 Spring Data JPA 结合)通过 Atomikos 协调跨两个不同数据库的事务。这篇文章从 我 2011 年写的一篇关于同一主题的旧文章开始,引入了 Spring Boot 和 Spring Data,并将示例从一个数据库和一个 JMS Broker 变成了通过 JPA 连接的两个不同数据库。这真的很酷!
- Yuan Ji 写了一系列非常好的文章,关于如何使用 Spring HATEOAS 构建符合 HAL 规范的 REST 服务,对其进行单元测试,以及最近关于如何使用 Angular-HAL 消费这些服务。
- 我们的朋友 Brian Hannaway 又回来了,这次带来了一篇关于 构建 Spring Batch 应用程序的文章。内容非常好,对于任何想学习 Spring Batch 的人来说都值得一读。文章中,Brian 展示了如何使用 XML 命名空间构建 Batch 应用程序。Spring Batch 也支持非常优秀的 Java 配置 API,而且使用 Spring Boot,编写 Spring Batch 应用程序可以非常简洁。我借鉴了 Brian 非常棒的示例,并使用 Spring Boot 和 Java 配置 API 编写了 一个不同的版本供参考。不过,请务必先阅读 Brian 的博客,否则我的仓库中的代码将难以理解!
Project Sagan:升级到 JDK 8
我相信大多数读者都知道,Java SE 8 于上个月发布。结合 最近发布的 STS 3.5.0 及其对 JDK 8 的完整支持,我们认为现在是升级 Sagan 以利用新语言特性和 API 的理想时机。
注意:还不熟悉 Sagan 项目?它是 Spring 的参考应用程序,支撑着本博客和 spring.io 上的所有其他内容。请查看本系列的 第一篇、三篇 文章以了解更多详情。
Cloud Foundry 的 Java buildpack 自发布之日起就提供了对 JDK 8 的支持。为了开始使用它,我们已经 创建了自己的 buildpack 分支,将 JDK 版本从 1.7.0 升级到 1.8.0,并 配置了我们的 Gradle 构建…金
本周 Spring - 2014 年 4 月 15 日
欢迎阅读最新一期的《本周 Spring》!本周我在法国巴黎参加 Devoxx FR 大会,与开发者们交流 Spring Framework 4.0、Spring Boot 等内容。下周我将前往印度班加罗尔参加印度开发者大会。一如既往,如果您在其中任何一个地方并且想谈论 Spring,请随时在线联系我。
- 4 月 30 日星期二网络研讨会——不要错过 Ashley Puls (New Relic) 和我本人,他们将追踪和诊断现代 Web 应用程序:使用 Java 和 Javascript 进行 Web 应用程序诊断
- 4 月 22 日星期二网络研讨会——看看是什么吸引了 EclipseCon 2014 的主题演讲:Martin Lippert 和 Mike Milinkovich 演示了 Project Flux 的 alpha 版本:将 Eclipse 连接到基于云的开发者工具时代。立即注册!
- Thomas Risberg 和 Janne Valkealahti 在本次 SpringOne2GX 2013 重播中展示了如何为 Java MapReduce、Streaming、Hive、Pig、Cascading 或 HBase 使用单一编程模型/配置模型:Spring Data 和 Apache Hadoop 入门
- 在 SpringOne2GX 2013 与 Jags Ramnarayan 和 Anthony Baker 共度 90 分钟:Hadoop 之上的内存数据和计算
- 看看 Kevin Nilson (Google) 和我本人在 SpringOne2GX 2013 上共同展示的关于 Spring Profiles 的内容,以及它是如何通过正常的开发/阶段/生产生命周期管理代码的出色工具:多环境 Spring 应用程序。
- 我再次与 Roy Clarkson 在 SpringOne2GX 2013 上讨论 Spring Mobile/Android、REST/OAUTH 等,主题是:使用 Spring 构建智能客户端
- Erdem Günay 写了一篇非常好的文章,介绍了 他如何使用 Spring Expression Language (SpEL) 和 Spring Boot 动态地向各种 Android 客户端发送远程安装指令。
- 我们的朋友 Sam Brannen 将在 亚特兰大 Spring 用户组发表演讲!其中一个聪明
- Moritz Schulze 写了一篇非常、非常详细的文章,关于他的公司如何使用 Java 8 和 Spring Boot 开发了一个名为 Trackr 的时间跟踪和假期管理应用程序
- Mario Arias 使用 Kotlin 语言编写了一个版本的 Spring 《关系型数据入门指南》。Kotlin 是 JetBrains 的静态类型编程语言,可以编译为 JVM 字节码和 JavaScript。非常酷!我以前从未见过 kotlinprimavera 模块,但我很喜欢!
- 微软企业布道总监 Patrick Chanezon 最近旁听了 我在 vJUG meetup 上关于 Spring Boot 的演讲,并开始动手实践!结果是一份关于如何将 Spring Boot 应用程序部署到 微软 Azure PaaS 的指南。太棒了!谢谢,Patrick!
- Hai Nguyen 写了一篇非常好的文章,介绍了 如何配置/使用嵌入式 Jetty 的 JNDI 绑定的
DataSource
- 您错过了 Spring framework 负责人 Juergen Hoeller 在 GOTO Amsterdam 关于 Spring 4 和 Java 8 的史诗级演讲吗?不用担心,您可以在线观看!
- 这期《本周 Spring》特别关注 PaaS!Kim Saabye Pedersen 写了一篇不错的文章,关于在 RedHat 的 OpenShift PaaS 上使用 Spring Boot
- 我们的朋友 Petri Kainulainen 又回来了,这次带来了一篇非常棒的 关于在 Spring 中使用 JOOQ 的文章。Petri 是社区中一个很棒的人。我想不用我多说了。收藏他的网站吧。几乎总是值得的。
- 我们在 Netflix 的朋友 Tomás Lin 又回来了!这次他写了一篇关于 使用 Spring Boot 和 Gradle 打包 Web 内容的文章
- Michael Simons 写了一篇非常详细的文章,介绍了 他是如何开发一个 Boot Web 应用程序的。感谢 Michael 详细的撰写。非常有价值的反馈。
使用 Geb 进行 Spring MVC 测试
缓存抽象:JCache (JSR-107) 注解支持
Spring 的缓存抽象从 Spring 3.1 开始提供,是时候给它更多关注了。在这篇文章中,我想带您了解该领域的主要改进,即 JCache (JSR-107) 注解支持。
您可能已经听说,JSR-107 最终发布了,这是在最初提案 13 年后。对于熟悉 Spring 缓存注解的人来说,下表描述了 Spring 注解与 JSR-107 对应注解之间的映射关系:
…Spring | JSR-107 |
---|---|
@Cacheable |
@CacheResult |
@CachePut |
@CachePut |
@CacheEvict |
@CacheRemove |
@CacheEvict(allEntries=true) |
@CacheRemoveAll |
JavaScript 模块化(摒弃行话)
将近十年前,Adrian Colyer 写了一篇令人难忘的博客文章,对面向切面编程 (AOP) 提供了最好的解释:风格清晰简洁,内容准确,没有行话。如果您查看了本系列的 前两篇文章,您可能已经注意到我们在 Sagan 应用程序的 客户端模块 中的一些架构选择,包括使用 JavaScript 模块。
在这篇文章中,我想以 Adrian 的文章风格带您了解 JavaScript 模块的基础知识:清晰、简单、准确、没有行话!
为什么 JavaScript 也需要模块化
如果,像我一样…金