領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多Spring的各位粉絲們,新年快樂!又到了《Spring年度回顧》欄目!
我寫下這篇回顧時,正坐在馬提尼克島(法屬加勒比海的一個美麗島國)一座俯瞰著蔥鬱叢林的桌子旁。我一邊呷著馬提尼克朗姆酒,享受著半烘烤的熱帶氣候,一邊回想已經過去的2024年。每年的這個時候,自2011年起,我都會撰寫這篇《Spring年度回顧》,以一種簡潔的方式回顧過去的一年。
今年發生了太多令人驚歎的事情。很難 pinpoint 任何一件特別突出的事情。但我會努力將其精簡。精簡為五件。正如我一貫所做的那樣。
我們也會像往常一樣,在下方提供本週的精選內容。
那麼,從哪裡開始呢?請記住,這 meant to be a roundup of the things that most impressed. The things that most took my breath away. 而不是一個羅列最新事物的列表。今年有很多符合這一標準的神奇事物。讓我們直接切入正題。
拜託,您肯定預料到了。我可是 Spring AI 的貢獻者!它非常棒,並且每時每刻都在變得更好!Spring AI 是一個端到端整合通用 AI 工程模式的綜合框架。它透過利用 Spring 的四大支柱:AOP、可移植服務抽象、依賴注入和自動配置,為構建 AI 驅動的系統和服務提供了強大的支援。
而且,它甚至還走在許多新穎而令人驚歎的協議的前沿,MCP - Model Context Protocol - 允許您將任意資料來源整合到您的 LLM 模型中。Spring AI MCP (至少目前而言)是 Spring AI 的一個子專案,使得生成和消費 MCP 服務變得輕而易舉。
在中文裡,‘愛’是 ‘ai’。‘我’是 ‘wo’。所以:wo ai AI!
聽著,我最頭疼的事情之一就是看到太多程式碼庫違背了良好的面向物件設計原則,使用了像 app.controllers、app.services、app.models、app.repositories 等之類的包結構。為了讓這種模式奏效,每一個型別(控制器除外)都需要是 public。為什麼?這是一種反模式!如果您只打算將所有東西都設為公共,為什麼還要使用一個不錯的面嚮物件語言呢?面向物件的目標就是資訊隱藏。如果您希望一切都有效地公開,在一個扁平的全域性名稱空間中,那就直接使用 C 語言吧!至少那還更誠實一點。
但有什麼替代方案呢?有很多其他方法可以指導您實現更清晰的架構,而我最喜歡的之一就是 Spring Modulith。Spring Modulith 為您提供了使用 Spring 構建清晰、模組化程式碼庫的工具。它擴充套件了框架,增加了基礎設施,使模組化解耦更容易。而且,透過使用約定和 ArchUnit 支援的測試,它允許您擴充套件 Java 語言,增加一層新的驗證級別,以確保您不會無意中將一個根包(一個“模組”)的實現細節暴露給另一個包。
相信我(我之所以是貢獻者是有原因的!):一旦您使用了 Spring Modulith,您就不會想回到過去了!您的程式碼將更清晰,架構更具長期性,您也會更有信心不會意外地向其他潛在的依賴者做出無法兌現的承諾!
這是一個新的實驗性專案(但它已經在 Spring Initializr 上了!),它允許您使用 Spring Boot 快速輕鬆地搭建 GraalVM 就緒的 gRPC 服務!您只需在 proto 資料夾中定義您的 proto 服務定義。您還需要知道什麼?前往 start.spring.io,選擇 gRPC,然後點選生成。使用您的構建工具構建專案,它將生成服務存根,然後您可以在 Spring Boot 專案中實現它們。如果您以通常的方式執行生成的 jar,它將以通常的方式將 gRPC 繫結到一個埠。如果您在類路徑中有 spring-boot-starter-web,它將透過 servlet 基礎設施公開 gRPC 服務。如果您有 Actuator,它將為您提供關於您服務的指標。而且,很快,如果您使用 spring-boot-starter-security,它將允許您保護您的服務。當然,如果您在 Spring Initializr 上選擇 graalvm,它將允許您將應用程式編譯成 GraalVM 原生二進位制檔案!真棒。立即試試吧(我將在新年做一個影片!)。
我無法告訴您近來我對 Spring Security 的印象有多深刻。它已經是所有安全、身份驗證和授權的一站式商店。但它卻一直在變得更容易、更強大。最新版本 - 6.4 - 包括了對以下方面的新的或增強的支援:
而且請記住,Spring Authorization Server 也一直在變得越來越好!最新版本使得搭建一個授權伺服器變得微不足道。對於常見情況,它基本上只需要一行程式碼!您甚至可以混合搭配:擁有一個 Spring Authorization Server,它允許使用者將 OAuth 客戶端重定向到處理身份驗證,然後讓使用者透過他們的指紋、魔法連結或任何其他方式進行身份驗證。太棒了!
使用像 Spring 這樣的框架存在著巨大的機遇,因為它位於您和底層執行時之間,這意味著如果我們——Spring 的開發者——能在框架層面進行最佳化,我們就可以做到,併為所有使用該框架的人帶來優勢。這是不容錯過的絕佳機會!因此,我們一直在尋找能夠改進您應用程式的途徑。今年也不例外。
今年,我們更是加大了努力。您可能知道 Spring Boot 對 Project CRaC 有很好的支援。我們對 GraalVM 原生映象也有出色的支援。今年我們推出了整合的 AppCDS 支援,並預覽了 Project Leyden 的支援。我製作了一個影片 涵蓋了所有這些選項(除了 Project Leyden)。有關 Project Leyden 的詳細資訊,請檢視此影片,該影片 與 Oracle 的 Java 團隊合作在 Devoxx Belgium 上釋出。
嗖嗖!
好了,在介紹了這五個重磅亮點功能後,讓我們來看看...
這是您通常的份量,來自我們這個最精彩的社群上週的新鮮事物!
我敢肯定,我代表整個 Spring 團隊向您說:新年快樂,我們期待在 2025 年與您相見!!