快人一步
VMware 提供培训和认证,助您加速前进。
了解更多各位 Spring 粉丝们好!新年快乐!欢迎来到新一期的《Spring 的这一年》!
我在马提尼克岛(法属加勒比海的一个美丽的岛国)一间俯瞰美丽丛林的桌子前写下本期文章。我正品尝着 马提尼克朗姆酒,享受着半闷热的天气,回想着 2024 年。自 2011 年以来,每年这个时候,我都会写下《Spring 的这一年》,从后视镜中回顾这一年。
这一年发生了太多精彩的事情。很难只挑出其中一件。但是,我将尝试将其范围缩小。至五件事。就像我一直做的那样。
和往常一样,下面还有本周回顾。
那么从何开始呢?请记住,这旨在回顾那些最令人印象深刻的事情。那些最让我惊叹的事情。而不是某个特定事物的最新进展回顾。有很多符合条件的神奇事物。让我们直接深入了解它们。
来吧。你肯定预料到了。我可是 Spring AI 的贡献者之一!它超级棒,并且每时每刻都在变得更好!Spring AI 是一个全面的框架,用于端到端集成 AI 工程的常见模式。它通过利用 Spring 的四大支柱:AOP、可移植服务抽象、依赖注入和自动配置,为构建 AI 驱动的系统和服务提供了强大的支持。
而且,它甚至走在了许多令人惊叹的新协议的前沿,例如 MCP(模型上下文协议),它允许您将任意数据源与您的 LLM 模型集成。Spring AI MCP(至少目前)是 Spring AI 的一个子项目,使得生产和消费 MCP 服务都变得非常简单。
在中文里,“爱”字是 ai。“我”字是 'wo'。所以:我爱 AI!
听着,我最大的抱怨之一就是看到许多代码库似乎违背了良好的面向对象设计原则,使用诸如 app.controllers
、app.services
、app.models
、app.repositories
等包结构。为了让这种方案奏效,每种类型(除了控制器之外)都需要是 public
的。为什么?这是一个反模式!如果你打算把所有东西都设为 public,为什么要使用一门优秀的面向对象语言呢?面向对象的全部意义在于信息隐藏。如果你想让所有东西都有效地成为 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 年见到您!!