使用 Spring Boot 3 进行可观察性

工程 | Marcin Grzejszczak | 2022 年 10 月 12 日 | ...

Spring 可观察性团队一直在努力为 Spring 应用程序添加可观察性支持,我们很高兴地通知您,此功能将随 Spring Framework 6 和 Spring Boot 3 正式发布!

什么是可观察性?在我们看来,它是“通过检查系统的输出了解系统内部的程度”。我们认为,度量、日志记录和分布式跟踪之间的互连使您能够推断系统状态,以便调试应用程序中的异常和延迟。您可以在Jonatan Ivanov 的 Enlightning 这期节目中更多地了解我们对可观察性的看法……

拥抱虚拟线程

工程 | Mark Paluch | 2022 年 10 月 11 日 | ...

Project Loom 通过JEP 425进入了 JDK。自 2022 年 9 月的 Java 19 起,它作为预览功能可用。其目标是极大地减少编写、维护和观察高吞吐量并发应用程序的工作量。

虚拟线程在哪里有意义

这使得轻量级虚拟线程成为应用程序开发人员和 Spring 框架的一种令人兴奋的方法。过去几年表明,应用程序之间通过网络进行通信的趋势。许多应用程序利用数据存储、消息代理和远程服务。如果 I/O 密集型应用程序构建为使用阻塞 I/O 功能(例如InputStream和同步 HTTP、数据库和消息代理客户端),则它们将主要受益于虚拟线程。在虚拟线程上运行此类工作负载……

本周 Spring - 2022 年 10 月 11 日

工程 | Josh Long | 2022 年 10 月 11 日 | ...

您好,Spring 粉丝!欢迎收看另一期本周 Spring!我写这期文章时,正在打包准备前往比利时安特卫普,参加在比利时安特卫普举行的始终令人惊叹的 Devoxx 展览。在疫情期间,我非常怀念这个展览,非常期待回归。我也希望在那里遇到你们所有人!我将与我的朋友 James Ward 共同介绍 Spring Boot 3 和 Kotlin 中的一些新颖内容。这将非常棒——加入我们,我们将一起玩得开心!

现在,我们有很多内容需要介绍,所以让我们直接深入了解吧!

Spring 提示:Spring Boot 和 Apache Kafka

工程 | Josh Long | 2022 年 10 月 10 日 | ...

您好,Spring 粉丝!在本期 Spring 提示中,我将介绍久负盛名的 Apache Kafka 代理及其在 Spring Boot 生态系统中不同抽象级别的集成。

想了解有关事件驱动架构、AOT 和 GraalVM、Apache Kafka 和 Spring Boot 的更多信息吗?SpringOne 2022 即将到来!如果您想有机会从源头学习,那么我希望您能加入我们,在 2022 年 12 月 6 日至 8 日,在我的家乡旧金山(我最喜欢的美国西海岸城市)与我们共度时光。(悄悄话:如果您现在注册,使用代码S1VM22_Advocate_200可以享受通行证价格 200 美元的折扣。)

一个漂亮的播客:Spring 和 Java 社区传奇人物 Marten Deinum

工程 | Josh Long | 2022 年 10 月 6 日 | ...

您好,Spring 粉丝!在本期节目中,Josh Long(@starbuxman)与 Spring 社区长期成员和传奇人物 Marten Deinum(@mdeinum)谈论水肺潜水、软件、Spring、社区等等。

此外:我修复了最近几集中间奇怪的静音!感谢您忍受它。我不知道出了什么问题,但现在我知道如何修复它了

想认识更多我们生态系统中像 Marten 这样很棒的人吗?SpringOne 2022 即将到来!我觉得这就像是在某个重要的节日之前,那种既焦虑又兴奋的时刻,你会收到礼物!随之而来的是,Spring Boot……

本周 Spring - 2022 年 10 月 4 日

工程 | Josh Long | 2022 年 10 月 4 日 | ...

您好,Spring 粉丝!欢迎收看另一期本周 Spring!今天是 2022 年 10 月 4 日,我在德克萨斯州奥斯汀,参加以前被称为 Kafka 峰会的节目的新版本,在这里与大家谈谈 Spring Boot 和 Apache Kafka 的惊人机遇。12 日,我将在比利时安特卫普参加令人惊叹的 Devoxx 展览。10 月 17 日至 20 日,我将在拉斯维加斯参加 JavaOne 的新版本。嗯,还有更多,但我不能确切地说。敬请关注!

至于现在,嗯,我很高兴来到这里!本周我们有很多很酷的东西要介绍,所以让我们直接深入了解吧……

一个漂亮的播客:思想领袖 Chris Richardson(不,我说的不是讽刺!)

工程 | Josh Long | 2022 年 9 月 29 日 | ...

您好,Spring 粉丝!在本期节目中,Josh Long(@starbuxman)与他的朋友 Chris Richardson(@crichardson)进行了交谈,Chris 在时代精神到来之前多年就帮助阐明和推动了云计算、反应式编程、微服务、领域驱动设计、事件溯源等等。此外,我们曾经一起工作过!

想认识更多我们生态系统中像 Chris 这样很棒的人吗?SpringOne 2022 即将到来!我觉得这就像是在某个重要的节日之前,那种既焦虑又兴奋的时刻,你会收到礼物!随之而来的是,Spring Boot 3 和 Spring Framework 6。我们将宣布……

删除密码:Spring Boot 应用程序到 Azure 服务的无密码连接

工程 | Josh Long | 2022 年 9 月 27 日 | ...

使用用户名/密码凭据从一个应用程序访问另一个应用程序会带来巨大的安全风险,原因有很多。今天,我们宣布了 Java 应用程序与 Azure 数据库和事件服务进行无密码连接的预览版,让您终于可以摆脱使用密码。

密码的安全挑战

应谨慎使用密码,开发人员绝不应将密码放在不安全的位置。许多 Java 应用程序使用用户名和密码连接到后端数据、缓存、消息传递和事件服务,或其他敏感凭据,例如访问令牌或连接字符串。如果泄露,密码可能会被用于未经授权地访问敏感信息,例如您为即将推出的活动构建的销售目录,或者只是所有必须保密的客户数据。

将密码嵌入到应用程序本身会带来巨大的安全风险,原因有很多,包括通过代码存储库发现(请参见下图 1)。许多开发人员使用环境变量外部化此类密码,以便应用程序可以从不同的环境中加载它们。但是,这只是将风险从代码本身转移到执行环境。任何获得环境访问权限的人都可以窃取密码,这反过来又会增加您的数据泄露风险。

图 1 – 显示了带有嵌入式用户名和密码以连接到数据库的 Java 代码

我们的客户可能需要严格的安全要求才能连接到 Azure 服务,而无需将密码泄露给开发人员、运营人员或任何其他人。他们通常使用保管库来存储和加载密码到应用程序中,并且他们通过添加密码轮换要求和过程进一步降低了风险。这反过来又会增加操作复杂性,并可能导致应用程序连接中断。

无密码连接 – 零信任

现在,您可以在应用程序中使用无密码连接,以通过无需代码的配置连接到基于 Azure 的服务。您不再需要轮换密码。使用“永不信任,始终验证和无凭据”的原则,零信任通过在授予后端服务访问权限之前,仅在验证身份后才信任机器或用户,从而帮助保护所有通信。

“我们拥有的每个密码和每个 Key Vault 都是潜在的风险,这增加了更多开销和管理成本。我一直很乐意看到更多身份验证和授权操作由我们处理,并作为简单的集成交付到 Azure 上的 Java 和 Spring 生态系统中。当我不再使用我们的 Key Vault 时,我不会感到难过,因为 PostgreSQL 现在支持无密码连接。”

-Jonathan Jones,首席解决方案架构师,瑞士再保险管理有限公司(瑞士)

使用托管标识和 Azure RBAC(基于角色的访问控制)组合是推荐的认证选项,用于从 Java 应用程序到 Azure 服务的安全、无密码连接。开发人员或操作员无需手动跟踪和管理许多不同的密钥,因为这些任务由 Azure 在内部安全地处理。

您可以使用服务连接器(参见下图 2)配置与 Azure 服务的无密码连接,也可以手动配置。服务连接器支持 Azure Spring Apps、App Service 和 Azure Container Apps 等应用程序托管服务中的托管标识。它使用托管标识和 Azure RBAC 为后端服务配置无密码连接,并为应用程序提供必要的连接信息——无需再使用密码。

图 2 – 服务连接器为 Java 应用程序到 PostgreSQL 数据库的无密码连接进行配置

如果您检查为无密码连接配置的应用程序的运行环境,则可以看到完整的连接字符串。例如,图 3 显示了它如何携带数据库服务器地址、数据库名称以及将身份验证委托给 Microsoft Azure 的 JDBC 身份验证插件的指令。

图 3 – 数据源配置“spring.datasource.url”显示无密码连接

让我们考虑一个使用 Spring Cloud Azure 启动器连接到使用 Spring Data JPA 模块的 PostgreSQL 数据库的 Spring Boot 应用程序。启动器会为 Spring Data JPA 模块生成一个无密码的连接字符串。从连接字符串中,驱动程序了解它必须加载 Azure 的 JDBC 身份验证插件,该插件使用 Azure Identity 客户端库获取访问令牌。驱动程序使用令牌作为密码登录数据库 - 无需再使用密码。

对于本地开发和测试,开发人员可以使用相同的安排连接到服务,而无需使用密码。您将通过 Azure CLI、IntelliJ 或任何开发工具进行身份验证,并使用该身份验证来保护应用程序连接到 Azure 服务的访问权限,而无需密码。

了解更多并删除密码!

您可以停止在应用程序中使用密码。立即迁移您现有的 Java 应用程序以使用 Azure 服务的无密码连接!

阅读有关无密码连接的更多信息 – https://aka.ms/Delete-Passwords

资源

<tbody>

<tr>
    <td>Azure Service</td>
    <td>Java Quickstart</td>
    <td>Spring Quickstart</td>
    <td>Migration Guide</td>
</tr>


<tr>
    <td> Azure Database for MySQL</td>
    <td>
    <a href="https://learn.microsoft.com/en-us/azure/mysql/single-server/connect-java?toc=%2Fazure%2Fdeveloper%2Fintro%2Ftoc.json&amp;bc=%2Fazure%2Fdeveloper%2Fintro%2Fbreadcrumb%2Ftoc.json&amp;tabs=passwordless">JDBC</a>
    </td>
    <td>
        <div><a href="https://learn.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-data-jdbc-with-azure-mysql?tabs…

本周的 Spring - 2022 年 9 月 27 日

工程 | Josh Long | 2022 年 9 月 27 日 | ...

您好,Spring 粉丝!欢迎收看另一期《本周的 Spring》!

已经是 9 月份的最后一周了!今年已经过去了一大半。白天越来越短,越来越快地陷入黑暗。南瓜香料拿铁也来了。阴暗寒冷的天气有点令人沮丧,但我仍然对一年中的这个时间感到兴奋和欣喜。你知道为什么吗?

SpringOne 2022 即将到来!我觉得这就像是在一个重要的假期之前那种既焦虑又兴奋的时刻,你将收到礼物!以及 Spring Boot 3 和 Spring Framework 6。当然,我们将在 Spring 博客上宣布所有内容,但如果您想有机会从源头学习,那么我希望您能加入我们,2022 年 12 月 6 日至 8 日,就在我的家乡旧金山,美国我最喜欢的西海岸城市,也是我的家乡。)悄悄告诉你:如果您现在注册,可以使用代码 S1VM22_Advocate_200 从通行证价格中享受 200 美元的折扣…

Spring Boot 3.0.0-M5 中的原生支持

工程 | Stéphane Nicoll | 2022 年 9 月 26 日 | ...

Spring 团队一直在努力为 Spring 应用程序提供原生镜像支持。在使用 Spring Boot 2 的 Spring Native 实验项目中孵化了 3 年多之后,原生支持将随着 Spring Framework 6 和 Spring Boot 3 的发布而进入通用可用性!

原生镜像为 Java 应用程序提供了几乎即时的启动时间和减少的内存消耗。最近的 Spring Boot 3.0.0-M5 版本标志着我们第一次寻求更广泛的社区对我们的原生故事的反馈。如果您需要了解基础知识,请参阅 3 月下旬的 提前编译基础知识博客文章。您还可以学习 如何为 Spring Boot 3.0 准备您的应用程序

获取 Spring 时事通讯

与 Spring 时事通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部