Spring 技巧:Spring Boot & Apache Kafka

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

大家好,Spring 爱好者!在本期 Spring 技巧中,我将介绍久负盛名的 Apache Kafka Broker 及其在 Spring Boot 生态系统中各种抽象层级的集成。

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

A Bootiful Podcast:Spring 和 Java 社区传奇人物 Marten Deinum

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

大家好,Spring 爱好者!在本期节目中,Josh Long (@starbuxman) 与 Spring 社区的老成员兼传奇人物 Marten Deinum (@mdeinum) 讨论了水肺潜水、软件、Spring、社区等话题。

另外:我修复了之前几期节目中间出现的奇怪的静音问题!感谢您与我一同忍受。我不知道出了什么问题,但我现在知道如何修复它。

想认识我们生态系统中更多像 Marten 一样出色的人吗?SpringOne 2022 很快就要到了!我觉得现在是某个重要节日(您会收到礼物!)之前的那个充满期待和兴奋的时刻!伴随而来的还有 Spring Boot…

本周 Spring 快讯 - 2022年10月4日

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

大家好,Spring 爱好者!欢迎收看本期《本周 Spring 快讯》!今天是 2022 年 10 月 4 日,我人在德克萨斯州奥斯汀,参加曾经的 Kafka Summit 的新版本活动,与大家谈论 Spring Boot 和 Apache Kafka 的精彩机遇。12 号,我将在比利时安特卫普参加精彩的 Devoxx 大会。10 月 17 日至 20 日,我将在拉斯维加斯参加新的 JavaOne 版本。嗯,还有更多,但我暂时不能透露。敬请关注!

至于现在,嗯,我很高兴来到这里!本周有很多很酷的内容要介绍,让我们直接开始吧……

A Bootiful Podcast:思想领袖 Chris Richardson(我不是在讽刺使用这个头衔!)

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

大家好,Spring 爱好者!在本期节目中,Josh Long (@starbuxman) 与他的朋友 Chris Richardson (@crichardson) 进行了交谈,Chris Richardson 在多年前就清晰地阐述并推动了云计算、响应式编程、微服务、领域驱动设计、事件溯源等许多概念。另外,我们曾经共事过!

想认识我们生态系统中更多像 Chris 一样出色的人吗?SpringOne 2022 很快就要到了!我觉得现在是某个重要节日(您会收到礼物!)之前的那个充满期待和兴奋的时刻!伴随而来的还有 Spring Boot 3 和 Spring Framework 6。我们将宣布…

删除密码:Spring Boot 应用连接 Azure 服务实现无密码连接

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

出于多种原因,使用用户名/密码凭据从一个应用程序访问另一个应用程序存在巨大的安全风险。今天,我们宣布为 Java 应用程序连接 Azure 数据库和事件服务提供无密码连接的预览版,让您最终可以摆脱使用密码。

密码的安全挑战

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

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

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

我们的客户可能有严格的安全要求,以便在不向开发人员、操作员或任何其他人公开密码的情况下连接到 Azure 服务。他们通常使用密钥库来存储和加载密码到应用程序中,并通过添加密码轮换要求和程序来进一步降低风险。这反过来又增加了操作复杂性,并可能导致应用程序连接中断。

无密码连接 – 零信任

现在,您可以在应用程序中使用无密码连接,通过零配置的方式连接到基于 Azure 的服务。您不再需要轮换密码。利用“永不信任,始终验证,无凭据”的原则,零信任通过在授予对后端服务的访问权限之前验证身份来保护所有通信。

“每一个密码和每一个 Key Vault 都是潜在的风险,这增加了额外的管理开销和成本。我一直很高兴看到更多的身份验证和授权功能得到处理,并作为简单的集成被推送到 Azure 上的 Java 和 Spring 生态系统中。当我删除我们的 Key Vault 时,我不会流一滴眼泪,因为现在 PostgreSQL 支持无密码连接。”
- Jonathan Jones,首席解决方案架构师,Swiss Re Management Ltd. (瑞士)

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

您可以使用 Service Connector(见下图 2)将无密码连接配置到 Azure 服务,也可以手动配置。Service Connector 支持 Azure Spring Apps、App Service 和 Azure Container Apps 等托管服务中的托管标识。它使用托管标识和 Azure RBAC 配置后端服务,提供应用程序所需的连接信息 – 无需再处理密码。

图 2 – Service Connector 为 Java 应用连接 PostgreSQL 数据库配置无密码连接

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

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

让我们考虑一个连接到使用 Spring Cloud Azure starter 的 PostgreSQL 数据库的 Spring Boot 应用程序。该 starter 为 Spring Data JPA 模块组合了一个不带密码的连接字符串。从连接字符串中,驱动程序会明白它必须加载 Azure 的 JDBC 身份验证插件,该插件使用 Azure Identity Client Library 获取访问令牌。驱动程序使用令牌作为密码登录数据库 – 无需再用密码。

对于本地开发和测试,开发人员可以使用相同的安排连接到服务而不使用密码。您将通过 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年09月27日 | ...

大家好,Spring 粉丝们!又到了一期“本周 Spring”!

已经是九月的最后一周了!一年过半已是过去式。白天越来越短,越来越冷。南瓜香料拿铁也随之而来。天色渐暗,寒意渐浓,这着实让人扫兴,但我仍然对一年中的这个时候感到兴奋和欣喜。您知道为什么吗?

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 Native 实验项目(与 Spring Boot 2 配合使用)中 3 年多的孵化,原生支持将随 Spring Framework 6 和 Spring Boot 3 一起进入通用可用阶段!

原生镜像为 Java 应用程序提供了几乎即时的启动时间和更低的内存消耗。最近的 Spring Boot 3.0.0-M5 版本是我们首次征求社区对我们的原生支持的广泛反馈。如果您需要了解基础知识,请参阅三月下旬的 Ahead Of Time 基础知识博客文章。您还可以了解 如何为 Spring Boot 3.0 准备您的应用程序……

我的 SpringOne 2022

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

我花了很长时间才认识到并理解,在软件开发方面,细节决定成败。编写“happy path”业务逻辑并不是难点!难点在于故障场景、可观测性、韧性以及流程。还有安全和其他所谓的非功能性需求。以及架构设计上的敏捷性。还有生产环境。Spring之所以独特,是因为它处于许多激动人心的应用程序开发讨论的交汇点。

Spring 的社区包含了海量的优秀人才,这是其关键的定义特征之一。这种讨论的多样性意味着任何致力于涵盖所有想法的会议都面临着艰巨的任务。在我一生中参加过数千场会议和活动中,我不知道还有哪场展会能像 SpringOne 一样全面覆盖应用程序开发的各个维度……

A Bootiful Podcast:Couchbase 和云传奇人物 Laurent Doguin

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

大家好,Spring 爱好者!在本期节目中,Josh Long (@starbuxman) 与他的朋友、Java 冠军和 Couchbase 的开发者关系与战略总监 Laurent Doguin (@ldoguin) 进行了交谈。

SpringOne 2022 很快就要到了!这是我们自疫情以来的第一次线下活动届时我们将发布 Spring Framework 6 和 Spring Boot 3,分别是 Spring 和 Spring Boot 的下一代产品。活动将于 12 月 6 日至 8 日在我阳光明媚的加利福尼亚州旧金山举行!立即在 SpringOne.io 注册,并使用代码 S1VM22_Advocate_200 即可享受当前注册价格的 $200 折扣。

Spring Session 2022.0.0-M3 发布

工程 | Rob Winch | 2022 年 9 月 20 日 | ...

我谨代表团队,很高兴地宣布发布 Spring Session 2022.0.0-M3。这些版本带来了增强功能、错误修复和依赖项升级。为了方便您,Spring Boot 将在其即将发布的新版本中采纳这些构件。

以下模块已作为 2022.0.0-M3 的一部分进行了更新

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

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

查看所有

版权所有 © 2005 -2025Broadcom。保留所有权利。“Broadcom”一词指 Broadcom Inc. 和/或其子公司。
使用条款 隐私 商标指南

Apache®、Apache Tomcat®、Apache Kafka®、Apache Cassandra™ 和 Apache Geode™ 是 Apache Software Foundation 在美国和/或其他国家的商标或注册商标。Java™、Java™ SE、Java™ EE 和 OpenJDK™ 是 Oracle 和/或其关联公司的商标。Kubernetes® 是 Linux Foundation 在美国和其他国家的注册商标。Linux® 是 Linus Torvalds 在美国和其他国家的注册商标。Windows® 和 Microsoft® Azure 是 Microsoft Corporation 的注册商标。“AWS”和“Amazon Web Services”是 Amazon.com Inc. 或其关联公司的商标或注册商标。所有其他商标和版权均为其各自所有者的财产,仅为提供信息之目的提及。其他名称可能是其各自所有者的商标。