本周 Spring - 2014年4月29日
欢迎来到另一期《本周 Spring》!上周我在印度班加罗尔度过了非常愉快的时光,昨天应疯狂流行的 Devoxx 会议创始人Stephan Janssen的邀请,我去了比利时鲁汶,短暂拜访了比利时 Java 用户组,在那里我与一些非常热情友好的当地人以及我的朋友兼 Spring 框架提交者 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 项目……) - 加入我和来自 New Relic 的 Ashley Puls,我们将在明天 4 月 30 日一起跟踪和追踪 Javascript(前端)和 Java/Spring(后端)应用程序。
- Spring Integration 正在开发一个令人难以置信的新版本——完全支持注解和 Java 配置 + 一些 Spring Boot 支持!使用 4.0,您可以创建无 XML 集成应用程序。项目负责人 Gary Russell 将在网络研讨会《Spring Integration 4.0,新的前沿》中带您了解所有新特性,5月13日。
- Spring Data Neo4j 负责人 Michael Hunger 和我将在 5 月 20 日举办一个关于新的令人敬畏的Spring Data Neo4j 3.0 和 Neo4j 2.0 的网络研讨会。
- 在关于Project Sagan的系列文章中,Spring 框架专家 Brian Clozel 刚刚撰写了一篇关于Project Sagan 如何处理客户端 JavaScript的非常好的文章。这篇文章很好地展现了使用
npm
、grunt
和gulp
的现代客户端应用程序是什么样的。最好的部分?内容以视频形式提供!完美! - Spring Roo 有一个主要的贡献者 DISID!看看我的朋友Pieter Humphrey关于 Spring Roo 未来发展方向的这篇精彩文章。
- 在 SpringOne2GX 2013 上与 Chris Richardson 交流 90 分钟,他将讨论 Java、Scala 和 Javascript 的未来。不,我们指的不是产品路线图。看看他的演讲,主题是:Futures 和 Rx Observables:用于异步使用 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 发行版的文章!(然后,查看用于 Hadoop 的 Spring和Spring XD!)
Project Sagan:客户端架构
既然我们对 JavaScript 模块有了更多了解,我们就可以深入研究 Sagan 应用程序的客户端架构了。
注意:如果您还没有阅读关于Sagan 项目的之前的博客文章,您应该知道这是为本博客和spring.io上的其他所有内容提供支持的 Spring 参考应用程序。之前的文章展示了如何运行此应用程序、我们如何进行零停机部署以及我们如何升级 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 源,可以在廉价硬件上实现 1M+ tx/sec、默认的 FTP 到 HDFS 作业等等!(不,真的,我们的意思是那样)。这个版本感觉就像他们不知何故跳过了所有 1.0.x 里程碑并发布了“2.0”版本!
- 反应堆项目负责人Jon Brisbin 与 Typesafe、Netflix、Twitter 等公司的其他工程师一起宣布了用于反应式流处理的新通用 API。这太重要了!
- Spring Data 负责人 Oliver Gierke 刚刚宣布Spring Data Codd 服务版本 2 现已可用。这个新版本非常重要,所以一定要查看所有内容!
- Dave Syer 博士刚刚宣布了Spring Security OAuth 2.0.0.RC1 的发布。这个项目发展非常迅速,我很享受将我的演讲代码更新到The Spring REST Stack,以使用越来越简洁和强大的迭代。我已经更新了该分支(仍在更新单元测试)以使用 Spring Security 2.0.0.RC1。它是一个支持 HTTP 和 HTTPS 的工作 OAuth 安全 REST 服务,可以独立运行或作为传统的
.war
运行,并使用自定义的UserDetailsService
bean 和 Java 8 lambda 表达式。不错! - Spring Integration 正在开发一个令人难以置信的新版本——完全支持注解和 Java 配置 + 一些 Spring Boot 支持!使用 4.0,您可以创建无 XML 集成应用程序。项目负责人 Gary Russell 将在网络研讨会《Spring Integration 4.0,新的前沿》中带您了解所有新特性,5月13日。
- 4 月 30 日,加入我和来自 New Relic 的 Ashley Puls,我们将一起跟踪和追踪 Javascript(前端)和 Java/Spring(后端)应用程序。
- Chris Beams 撰写了另一篇关于 Sagan 项目的精彩文章,这篇是关于迁移到 Java 8 的。看看吧!
- 我最近的演讲使用 Spring Boot 构建“漂亮”的应用程序的回放现在可以在我们的 YouTube 频道上观看。
- Spring Security 负责人 Rob Winch 又发表了一篇关于使用常用第三方项目进行高级 Spring MVC 测试集成的文章。这篇文章是关于使用 Geb 测试 Web 应用程序的。
- Spring Data Neo4j 负责人 Michael Hunger 和我将在 5 月 20 日举办一个关于新的令人敬畏的Spring Data Neo4j 3.0 和 Neo4j 2.0 的网络研讨会。
- 搜索方面有疑问?您将有机会与我们以前在 Elasticsearch 的同事和 Spring 贡献者 Costin Leau 进行 90 分钟的交流:您的数据,您的搜索,Elasticsearch。
- 不要错过 Pivotal 的 Mike Wiesner,他将在这篇SpringOne2GX 2013 回放:应用程序安全陷阱中讨论务实的应用程序安全(不仅仅是 Spring Security)。
- Groovy 语言负责人 Guillaume LaForge 的精彩Groovy 周刊专栏进展顺利!总是有好东西,本周也不例外。如果您喜欢所有 Groovy(和 Grails)方面的内容,请查看一下。
- 这个由 Alexandre Rafalovitch 开发的项目旨在改进 SOLR JavaDoc。这里有很多值得称赞的地方,但我喜欢这个 Spring Boot 示例,它演示了连接到 SOLR 实例的 REST 端点。不错!
- Fabio Maffioletti 撰写了一篇非常好的文章,讨论了如何通过 Atomikos 使用 JTA 与 Spring(特别是使用 Spring Boot 和 Spring Data JPA)协调跨两个不同数据库的事务。这篇文章从我在 2011 年撰写的一篇关于同一主题的较旧文章开始,介绍了 Spring Boot 和 Spring Data,并将示例从一个数据库和一个 JMS 代理更改为通过 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 的博客,否则我的存储库中的代码将毫无意义!
Sagan 项目:升级到 JDK 8
我相信大多数读者都知道,Java SE 8 上个月发布了。结合最近发布的 STS 3.5.0及其对 JDK 8 的完全支持,我们认为现在是升级 Sagan 以利用新语言特性和 API 的理想时机。
注意:还不熟悉Sagan 项目?它是为本博客和spring.io上的所有其他内容提供支持的 Spring 参考应用程序。查看本系列中的第一篇三篇文章以了解更多详细信息。
Cloud Foundry 的Java 构建包自发布之日起就提供了对 JDK 8 的支持。为了开始使用它,我们创建了自己的构建包分支,将 JDK 版本从 1.7.0 提升到 1.8.0,并配置了我们的 Gradle 构建……
本周 Spring - 2014 年 4 月 15 日
欢迎来到另一期本周 Spring!本周,我正在法国巴黎与开发人员讨论 Spring Framework 4.0、Spring Boot 以及更多内容,地点在Devoxx FR。下周将前往印度班加罗尔参加伟大的印度开发者峰会。与往常一样,如果您在任何一个地方并想讨论 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 应用程序。
- 我在 SpringOne2GX 2013 上与 Roy Clarkson 再次合作,讨论 Spring Mobile/Android、REST/OAUTH 等:使用 Spring 构建智能客户端
- Erdem Günay 撰写了一篇非常好的文章,介绍了他如何使用 Spring 表达式语言 (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(微软企业布道总监)最近参加了我关于 Spring Boot 的 vJUG 会议演讲,并开始着手进行黑客攻击!结果是一些关于如何将 Spring Boot 应用程序部署到微软 Azure PaaS的指导。不错!谢谢,Patrick!
- Hai Nguyen 撰写了一篇非常好的文章,介绍了如何配置/使用嵌入式 Jetty 的 JNDI 绑定
DataSource
- 您错过了 Spring 框架负责人 Juergen Hoeller 在 GOTO 阿姆斯特丹关于 Spring 4 和 Java 8 的精彩演讲吗?别担心,您可以在线观看!
- 这是一个特别 PaaS 的本周 Spring!Kim Saabye Pedersen 撰写了一篇关于在 RedHat 的 OpenShift PaaS 上使用 Spring Boot的好文章
- 我们的朋友 Petri Kainulainen 回来了,这次他撰写了一篇关于使用 JOOQ 与 Spring 的非常好的文章。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 也需要模块化
如果,像我一样……
本周 Spring — 2014 年 4 月 8 日
欢迎来到另一期《本周 Spring》!
明天,我将在vJUG(一个虚拟 JUG)上做一个关于Spring Boot的演讲。别告诉任何人,但演讲本身将基于Spring Boot 联合创始人Phil Webb和我一直在计划的一个演讲。代码已经上线,所以请查看一下,我期待着明天见到你!如果您错过了演讲,并且碰巧在湾区,那么周四晚上加入我们在旧金山的 Pivotal 办公室,我们将与 Phil 和我一起进行一个更浓缩版本的相同演讲!
然后,本周日,我将传播 Spring 的魅力!我将先降落在巴黎参加Devoxx FR。从那里,我将前往印度班加罗尔参加伟大的印度开发者峰会。自 2012 年以来我就没去过那里了,我非常期待这次活动,也期待在那里见到优秀的 Spring 社区成员。然后,在我回家的路上,我会顺便去比利时参加比利时 JUG 的演讲……