Dave Syer

Dave Syer

Spring Cloud、Spring Boot、Spring Batch 的创始人,Spring Security OAuth 的负责人,以及 Spring Integration、Spring Framework、Spring AMQP、Spring Security 的活跃贡献者。经验丰富的、以交付为中心的架构师和开发经理。曾使用 Spring 设计和构建成功的企业软件解决方案,并在全球各大机构中实施。

博客文章作者Dave Syer

使用 Spring 实现无反射模板

工程 | 2024年3月22日 | ...

最近出现了一些 Java 库,它们使用文本模板,但在构建时编译成 Java 类。因此,在某种程度上,它们可以声称是“无反射”的。除了运行时性能的潜在优势外,它们还承诺易于使用并与 GraalVM 原生镜像编译集成,因此对于刚开始使用 Spring Boot 3.x 中该栈的人来说非常有趣。我们来看一下一些库(JStachioRockerJTEManTL)以及如何运行它们。

示例的源代码位于 GitHub 上,每个模板引擎都有其自己的……

超媒体和浏览器增强

工程 | 2024年3月15日 | ...

如今的前端开发主要由大型 JavaScript 客户端框架主导。有很多充分的理由可以解释这一点,但对于许多用例来说,它可能非常低效,并且框架工程变得极其复杂。在本文中,我想探索一种不同的方法,一种更有效、更灵活的方法,它由更小的构建块构建而成,并且非常适合 Spring 等服务器端应用程序框架(或各种服务器端语言中的类似工具)。这个想法是拥抱超媒体的概念,想象一下下一代浏览器将如何……

使用 Spring Boot 应用程序进行客户端开发 - 第 2 部分

工程 | 2021年12月17日 | ...

第 1 部分

使用 SSE 流的纯 Javascript

在这个简单的 HTML 替换用例中,Vue 并没有真正增加很多价值,并且它不会对 SSE 示例增加任何价值,因此我们将继续使用原生 Javascript 实现它。这是一个流选项卡

<div class="tab-pane fade" id="stream" role="tabpanel">
	<div class="container">
		<div id="load"></div>
	</div>
</div>

以及一些用于填充它的 Javascript 代码

<script type="module">
	var events = new EventSource("/stream");
	events.onmessage = e => {
		document.getElementById("load").innerHTML = e.data;
	}
</script>

使用 React 实现动态内容

使用 Spring Boot 应用程序进行客户端开发

工程 | 2021年12月17日 | ...

本文探讨了 Spring Boot 开发人员在应用程序的客户端(浏览器)端使用 Javascript 和 CSS 的不同选项。计划的一部分是探索一些在 Spring Web 应用程序的传统服务器端渲染世界中表现良好的 Javascript 库。这些库往往对应用程序开发人员的影响很小,因为它们允许您完全避免使用 Javascript,但仍然拥有良好的渐进式“现代”UI。我们还将研究一些更“纯”的 Javascript 工具和框架。这有点像一个频谱,因此作为 TL;DR,这里……

用于 RSocket 的“Wiremock”

工程 | 2021年6月2日 | ...

如果您的应用程序在运行时连接到 RSocket 服务器,如何对其进行测试?我们需要一种方法让测试启动服务器并告诉我们它在哪个端口监听,然后我们需要能够注册请求和响应示例(也称为“契约”)。这就是这个 项目 提供的功能 - 它就像 Wiremock,但用于 RSocket。

入门

使用该项目的最简单方法是作为 JUnit(Jupiter)扩展,例如

@SpringBootTest
@ExtendWith(RSocketServerExtension.class)
class SocketsApplicationTests {
	...
}

安装此扩展后,Spring Boot 测试将在 test.rsocket.server.port 指定的端口上运行 RSocket 服务器,因此测试可以直接连接到它,或者(更可能的是)它正在测试的代码将连接到它。您可能需要通过 @SpringBootTest 注解告诉它连接到哪里,例如,如果应用程序在运行时查找名为 rsocket.port 的属性……

Spring Cloud Function 原生镜像

工程 | 2020年5月4日 | ...

以下是 Spring Cloud Function 在 AWS Lambda 上内存与计费的最新图表。它显示了作为 Lambda 中内存分配函数的计费指标 GBsec,用于两个自定义运行时,一个使用纯 Java,另一个使用 GraalVM 原生镜像,如 Andy Clement 最近在这篇博客文章中所述

aws-billing-3.x

在这两种情况下,功能都是相同的(一个简单的 POJO-POJO 函数),并且它们都只显示冷启动的结果。热启动(在请求到来时函数已处于活动状态)的速度和成本要低得多(除了最小的内存设置外,所有设置的成本都相同……

Spring Boot 中的手动 Bean 定义

工程 | 2019年1月21日 | ...

假设您想使用 Spring Boot,但不想 @EnableAutoConfiguration。您应该怎么做?在 之前的一篇文章 中,我展示了 Spring 本身是快速且轻量级的,但改进启动时间的简短建议之一是考虑手动导入 Spring Boot 自动配置,而不是自动全部导入。它并非适用于所有应用程序的正确做法,但它可能有所帮助,并且了解选项肯定不会有害。在这篇文章中,我们探讨了手动配置的各种方法,并评估了它们的……

Spring 的速度有多快?

工程 | 2018年12月12日 | ...

性能一直是 Spring 工程团队的首要任务之一,我们不断监控和响应变化以及反馈。最近(在过去 2-3 年中)完成了一些相当密集且精确的工作,本文旨在帮助您找到这些工作的成果,并学习如何在您自己的应用程序中衡量和提高性能。标题是 Spring Boot 2.1 和 Spring 5.1 对启动时间和堆使用量进行了一些非常不错的优化。以下是由测量堆受限应用程序的启动时间生成的图表

heap-size-2.1.x

当您……

容器中的 Spring Boot

工程 | 2018年11月8日 | ...

许多人使用容器来包装他们的 Spring Boot 应用程序,而构建容器并非易事。这是一篇面向 Spring Boot 应用程序开发人员的文章,容器并不总是开发人员的良好抽象 - 它们迫使您学习并考虑非常底层的关注点 - 但您偶尔会被要求创建或使用容器,因此了解构建块非常有益。在这里,我们的目标是向您展示一些您可以在需要创建自己的容器时可以做出的选择。

我们假设您知道如何创建和构建基本的 Spring Boot 应用程序。如果您不知道,请访问其中一个 入门指南,例如关于构建 REST 服务 的指南。从那里复制代码,并练习以下一些想法。还有一个关于 Docker 的入门指南……

Spring Cloud Function 中的功能 Bean 注册

工程 | 2018年10月22日 | ...

Spring Cloud Function 在 2.0(仍在里程碑阶段)中具有一些新功能,可能最引人注目的是能够“完全面向功能”。这得益于 Spring Boot 2.1 和 Spring Framework 5.1 中的变化,这意味着在 Spring 应用程序中思考 Bean 定义的不同方式,但也显著提高了启动性能。

AWS 成本节省

从图片开始总是好的,尤其是在它讲述了一个故事的时候。以下是一个图表,显示了 Spring Cloud Function 2.0 相比于 1.0 的改进,比较了……中的冷启动成本。

领先一步

VMware 提供培训和认证,助您快速提升技能。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

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

查看全部