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 Native Image 編譯整合,因此對於剛開始在 Spring Boot 3.x 中使用該堆疊的人來說非常有趣。我們來看看一些函式庫(JStachioRockerJTEManTL),以及如何讓它們運行。

範例的原始碼位於 GitHub 中,每個範本引擎都有自己的…

超媒體與瀏覽器增強

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

目前前端開發主要由大型 JavaScript 客戶端框架主導。這有很多充分的理由,但對於許多用例來說可能非常低效,而且框架工程變得極其複雜。在本文中,我想探索一種不同的方法,一種更有效率、更靈活的方法,由更小的構建模組建構而成,並且非常適合 Spring 等伺服器端應用程式框架(或各種伺服器端語言中的類似工具)。這個想法是擁抱超媒體的概念,想像一下下一代瀏覽器會…

使用 Spring Boot 應用程式的客戶端開發 - 第 2 部分

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

第 1 部分

使用 SSE 串流的純 Javascript

Vue 在這個簡單的 HTML 替換用例中並沒有真正增加太多價值,而且它對 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 測試將在 RSocket 伺服器監聽 test.rsocket.server.port 給定的埠上運行,因此測試可以直接連線到它,或者(更有可能)它正在測試的程式碼將連線到它。您可能需要透過 @SpringBootTest 註解告訴它連線到哪裡,例如,如果應用程式正在尋找運行時呼叫的屬性 rsocket.port

Spring Cloud Function 原生映像檔

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

這是 Spring Cloud Function 在 AWS Lambda 上的記憶體與帳單的最新圖表。它顯示了帳單指標 GBsec 作為 Lambda 中記憶體分配的函數,用於兩個自訂運行時,一個是純 Java,另一個是使用 GraalVM Native Image,正如 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 社群中所有即將到來的活動。

檢視全部