1.3. 新功能、功能增强和技术变化
本节概述红帽构建的 Quarkus 3.15 中引入的新功能、增强功能和技术变化。
1.3.1. 兼容性 复制链接链接已复制到粘贴板!
1.3.1.1. Spring API 重构,使其与 Spring Boot 3 保持一致 复制链接链接已复制到粘贴板!
随着红帽构建的 Quarkus 3.15,quarkus-spring-data-rest-extension 被重构为与最新的 spring-data-jpa 3.x 更新保持一致。这个版本包括以下密钥更改:
-
两个新接口:
ListCrudRepository和ListPagingAndSortingRepository。这些新的List方法不是由 Quarkus REST 公开,与 Spring 的行为一致。 对类层次结构的修改:
-
PagingAndSortingRepository不再扩展CrudRepository -
ListCrudRepository扩展CrudRepository -
ListPagingAndSortingRepository扩展PagingAndSortingRepository -
JpaRepository扩展ListCrudRepository和ListPagingAndSortingRepository
-
这个重构引入了破坏的变化。如需更多信息,请参阅 影响与早期版本兼容的更改 章节。
1.3.2. Core 复制链接链接已复制到粘贴板!
1.3.2.1. 引入的 container-image-podman 扩展 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 3.15 引入了一个新的扩展 container-image-podman,专用于 Podman。
如果您希望使用 Podman 而不是 Docker,现在可以使用这个新扩展。它复制现有 container-image-docker 扩展的功能,同时支持使用 Podman 构建容器镜像并将其加载到本地 registry 中。
虽然 container-image-docker 扩展是,并且始终与 Podman 的 Docker 兼容 API 兼容,但 container-image-podman 是为使用 Podman 工具集无缝构建镜像而量身定制的。
对 Docker 特定的任务使用 container-image-docker 扩展,对与 Podman 相关的任务使用 container-image-podman 扩展。例如,对于 Docker 和 Podman,构建多平台镜像是不同的。Docker 使用 Buildx 插件,而 Podman 可以原生构建多平台镜像。因此,您必须使用特定的扩展来执行该功能。
1.3.2.2. 升级的默认 UBI 镜像 复制链接链接已复制到粘贴板!
在 Red Hat build of Quarkus 3.15 中,以下默认 UBI 镜像已升级:
-
UBI-minimal升级到 8.10 版本 -
OpenJDK-17-runtime升级到 1.20 版本 -
OpenJDK-21-runtime升级到 1.20 版本
1.3.2.3. 扩展注解处理器重新开发 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 3.15 引入了扩展注解处理器的新架构,并删除了如何生成配置文档。
这个版本与为红帽构建的 Quarkus 开发扩展的用户相关。
扩展注解处理器有两个主要目的:
- 生成红帽构建的 Quarkus 构建和运行时需要的文件。例如,构建步骤列表或配置 roots 列表。
- 为扩展的配置属性生成文档。
通过此重新开发,注释处理器架构得到简化,并将构建扩展所需的文件与生成文档所需的文件分隔开。
在以前的版本中,扩展注解处理器会在 root target/generated/config 目录中生成配置文档。现在,扩展注解处理器会构建配置的模型,然后以各种所需格式输出,如 AsciiDoc。
如需更多信息,请参阅以下 Quarkus 资源:
- 迁移指南 3.14
- Quarkus "Writing your own extension" 指南中的配置部分 https://quarkus.io/version/3.15/guides/writing-extensions#configuration
- 将配置映射到对象
1.3.2.4. 生成者方法和引入的复合 Bean 的拦截器 复制链接链接已复制到粘贴板!
Arc 是红帽构建的 Quarkus 的上下文和依赖注入(CDI)实施。默认情况下,拦截器只支持受管 Bean,也称为基于类的 Bean。
红帽构建的 Quarkus 3.15 引入了 InterceptionProxy API 和 @BindingsSource 注释,支持生成者方法和复合 Bean 的拦截器。
InterceptionProxy API 创建一个代理,该代理应用 @AroundInvoke 拦截器,然后将方法调用转发到目标实例。使用 @BindingsSource 注释,您可以在拦截器的类是外部且无法更改时设置拦截器绑定。
如需更多信息,请参阅 Quarkus 上下文和依赖项注入 指南。
1.3.2.5. 禁用引入实时重新加载的选项 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 3.15 引入了 quarkus.live-reload.enabled 配置属性,您可以在使用带有 Dev 服务的功能的 dev 模式时关闭自动实时重新加载。
默认情况下,此属性设为 true。要禁用自动实时重新加载,请将其设置为 false。
1.3.2.6. quarkus config 命令已更新 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 3.15 对 quarkus config 命令包括以下更新。
quarkus config encrypt子命令被更新,以将secret选项更改为参数。在以前的版本中,要加密值,您可以运行以下命令:quarkus config encrypt --secret=<xyz123>
quarkus config encrypt --secret=<xyz123>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,您运行:
quarkus config encrypt <xyz123>
quarkus config encrypt <xyz123>Copy to Clipboard Copied! Toggle word wrap Toggle overflow quarkus config set子命令被更新,以将name和value选项改为 parameters。在以前的版本中,要设置配置,您可以运行以下命令:quarkus config set --name=<abc> --value=<xyz123>
quarkus config set --name=<abc> --value=<xyz123>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,您运行:
quarkus config set <abc> <xyz123>
quarkus config set <abc> <xyz123>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,在此发行版本中,从配置命令省略
value参数不再从application.properties文件中删除现有的配置。相反,要删除配置,请使用以下命令,将 <abc> 替换为配置属性名称:quarkus config remove <abc>
quarkus config remove <abc>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Quarkus CLI 主要用于开发目的,包括创建、更新和构建 Quarkus 项目等任务。但是,红帽不支持在生产环境中使用 Quarkus CLI。
如需更多信息,请参阅配置指南中的 Quarkus Secret。
1.3.3. data 复制链接链接已复制到粘贴板!
1.3.3.1. Flyway 升级到 10.10 复制链接链接已复制到粘贴板!
在 Red Hat build of Quarkus 3.15 中,Flyway 扩展已升级到 Flyway 10.10。
如需更多信息,请参阅使用 Flyway 指南 的 Quarkus。
1.3.3.2. Hibernate ORM 构建时间针对大型模型进行了优化 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 3.15 引入了增强,可加快大型实体模型的 Hibernate 对象关系映射(ORM)构建时间。
特别是,预计这些增强功能将使 Quarkus dev 模式的 Live Reload 功能更快响应具有大型实体模型的应用程序。
1.3.3.3. Hibernate ORM 升级至版本 6.6 复制链接链接已复制到粘贴板!
在 Red Hat build of Quarkus 3.15 中,Hibernate ORM 升级到 6.6 版本。
如需更多信息,请参阅以下资源:
1.3.3.4. Hibernate Reactive 升级到版本 2.4 复制链接链接已复制到粘贴板!
在 Red Hat build of Quarkus 3.15 中,Hibernate Reactive 扩展已升级到 2.4 版本。
如需更多信息,请参阅 Quarkus Hibernate Reactive 指南。
1.3.3.5. Hibernate Search 升级至 7.2 版本 复制链接链接已复制到粘贴板!
在 Red Hat build of Quarkus 3.15 中,Hibernate Search 被升级到 7.2 版本。
Hibernate Search 为您的红帽构建的 Quarkus 应用程序提供索引和全文本搜索功能。要了解更多有关 Hibernate Search 的信息,请参阅以下资源:
1.3.3.6. MongoDB 客户端升级至版本 5.1 复制链接链接已复制到粘贴板!
在 Red Hat build of Quarkus 3.15 中,MongoDB 客户端从版本 4.11 升级到 5.1 版本。
1.3.4. 原生 复制链接链接已复制到粘贴板!
1.3.4.1. 原生镜像代理集成 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 3.15 引入了与原生镜像代理集成,您可以在将应用程序编译到原生镜像时,红帽构建的 Quarkus 尚不支持库或组件。
通过这种集成,您可以使用需要大量原生镜像配置的 JDK API。您还可以使用原生镜像代理在 JVM 模式中为应用程序运行集成测试。代理生成的配置可帮助您开始使用不受支持的库并将应用程序作为原生可执行文件运行。
此集成仅适用于 Apache Maven。
在 pom.xml 中,新生成的项目会自动出现适当的配置。
如需更多信息,请参阅 Quarkus 原生参考指南。
1.3.5. Observability(可观察性) 复制链接链接已复制到粘贴板!
1.3.5.1. 引入了 Observability Dev Services 扩展 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 3.15 引入了 Dev 服务的 quarkus-observability-devservices 和 quarkus-observability-devservices-lgtm 扩展,支持 OpenTelemetry LGTM (OTel LGTM) Docker 镜像:
您可以更新 pom.xml 文件,将每个扩展添加为依赖项。例如:
如需更多信息,请参阅以下 Quarkus 资源:
- Observability dev 服务
- "Dev Services overview" 指南中的 Observability 部分
- 使用 Grafana OTEL LGTM 的可观察性开发服务
1.3.5.2. OpenTelemetry 和工具升级 复制链接链接已复制到粘贴板!
在 Red Hat build of Quarkus 3.15 中,OpenTelemetry (OTel) SDK 版本从 1.32 升级到 1.39。另外,OTel 检测从版本 1.32 升级到 2.50。
这些升级包括以下破坏更改:
- HTTP 语义惯例已更改。如需更多信息,请参阅这里的更改列表: HTTP 语义约定稳定性迁移。
-
quarkus.otel.semconv-stability.opt-in系统属性已被删除,因为用户无法再选择。 - 在创建表时,数据库范围名称已更改。
-
io.opentelemetry.extension.annotations.WithSpan的已弃用的注解已被删除。从 Red Hat build of Quarkus 3.15 中,您必须使用新的io.opentelemetry.instrumentation.annotations.WithSpan。
如需更多信息,请参阅 影响与早期版本的兼容性的更改。
1.3.5.3. 使用 Quarkus Redis 客户端时的 OpenTelemetry 支持 复制链接链接已复制到粘贴板!
当使用带有 OpenTelemetry (OTel)的 quarkus-redis-client 扩展时,Red Hat build of Quarkus 3.15 引入了对追踪的支持。
红帽构建的 Quarkus 提供了手动和自动的工具进行追踪。您必须将此 OpenTelemetry Redis 实现放在 quarkus-opentelemetry 扩展检测下。
追踪数据包括其他属性、request 语句、数据库实例和对等地址。状态代码和消息在错误 span 中提供。
如需更多信息,请参阅使用 Quarkus Redis 客户端 指南。
1.3.6. 安全性 复制链接链接已复制到粘贴板!
1.3.6.1. REST 端点验证机制选择的注解 复制链接链接已复制到粘贴板!
使用红帽构建的 Quarkus 3.15,您可以使用注解启用特定于 Jakarta REST 端点的身份验证机制。
由于您只能在 REST 端点匹配后选择验证机制,因此只有在禁用主动身份验证时(即 quarkus.http.auth.proactive 设置为 false 时,才会启用此功能。
如需更多信息,请参阅"Quarkus 身份验证机制"指南中的 Jakarta REST 端点启用基于路径的身份验证 部分。
1.3.6.2. 引入了 @ClientBasicAuth 注释 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 3.15 引入了一个新的注解 @ClientBasicAuth,它简化了如何在红帽构建的 Quarkus REST 客户端中使用基本身份验证用户名和密码设置 HTTP Authorization 标头。
使用 HTTP 基本身份验证时,quarkus.rest.client.reactive.ClientBasicAuth 注解简化了所需授权标头的配置。
例如:
@ClientBasicAuth(username = "${service.username}", password = "${service.password}")
public interface SomeClient {
}
@ClientBasicAuth(username = "${service.username}", password = "${service.password}")
public interface SomeClient {
}
在本例中,service.username 和 service.password 是您在运行时设置的配置属性,其使用适当的用户名和密码授予对目标服务的访问权限。
如需更多信息,请参阅使用 REST 客户端 的 Quarkus 指南。
1.3.6.3. 基于问题解决静态 OIDC 租户 复制链接链接已复制到粘贴板!
在 Red Hat build of Quarkus 3.15 中,您可以使用访问令牌的签发者解决支持 Bearer 令牌身份验证的静态 OpenID Connect (OIDC)租户。
要使基于此问题的解决方案可以正常工作,请确保满足以下条件:
-
访问令牌必须采用 JSON Web Token (JWT)格式,并包含签发者(
is)令牌声明。 -
只有带有应用程序类型
服务或混合的OIDC 租户才被考虑。这些租户必须发现或配置了令牌签发者。
您必须使用 quarkus.oidc.resolve-tenants-with-issuer 属性启用令牌签发者。
如需更多信息,请参阅使用 OIDC 多租户 的 Quarkus 指南。
1.3.6.4. 引入了 OIDC 重定向过滤器 复制链接链接已复制到粘贴板!
当用户重定向到 OpenID Connect (OIDC)供应商进行身份验证时,重定向必须指示到在身份验证完成后将用户定向到该供应商。
红帽构建的 Quarkus 3.15 引入了 OpenID Connect (OIDC)重定向过滤器来过滤 OIDC 重定向。您可以注册一个或多个 io.quarkus.oidc.OidcRedirectFilter 实现,以过滤 OIDC 重定向到 OIDC 授权和注销端点,并过滤 local 重定向到自定义错误和 session-expired 页面。
使用 OidcRedirectFilter,您还可以为所有重定向请求添加额外的查询参数、响应标头和设置新的 Cookie。
如需更多信息,请参阅 Quarkus " OIDC authorization code flow mechanism" 指南中的 OIDC redirect filter 部分。
1.3.6.5. OIDC session-expired 页引入 复制链接链接已复制到粘贴板!
在以前的版本中,如果无法刷新用户会话,当前经过身份验证的用户会被重定向到 OpenID Connect (OIDC)供应商来重新验证。但是,用户可能并不明显,为什么需要重新验证。
使用红帽构建的 Quarkus 3.15,您现在可以配置用户重定向到一个公共的特定于应用程序的、特定于会话的页面。此页面告知用户会话已过期,并建议他们通过指向安全应用程序 Welcome 页面的链接来重新进行身份验证。
要启用此页面,请指定 quarkus.oidc.authentication.session-expired-page 相对路径属性。
如需更多信息,请参阅 Quarkus OIDC 授权代码流机制。
1.3.6.6. 引入了 OIDC TokenCertificateValidator 注解 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 3.15 通过引入 OpenID Connect (OIDC) TokenCertificateValidator 注解来增强安全性。除了默认的链验证外,您还可以使用此注解将自定义证书链验证检查添加到令牌的证书链。
如需更多信息,请参阅 Quarkus OIDC bearer 令牌身份验证 指南。
1.3.6.7. 将安全事件导出为 OpenTelemetry 事件 复制链接链接已复制到粘贴板!
使用红帽构建的 Quarkus 3.15,如果安全上下文可用,您可以将安全事件导出为 OpenTelemetry (OTel)事件。此功能将用户标识和角色添加到 span 属性中。
要启用此功能,请在 application.properties 文件中将以下配置属性设置为 true :
quarkus.otel.security-events.enabled=true
如需更多信息,请参阅以下 Quarkus 资源:
1.3.6.8. 签名的 OIDC UserInfo 接受 复制链接链接已复制到粘贴板!
在 OpenID Connect (OIDC)授权过程中,如果 ID 令牌没有提供有关当前经过身份验证的用户的足够信息,您可以从 UserInfo 端点以 JSON 格式获取更多信息。
在 Red Hat build of Quarkus 3.15 中,支持作为签名的 JSON Web Token (JWT)返回的 UserInfo。红帽构建的 Quarkus 会验证此签名的 JWT 令牌,然后使用安全 JSON 数据初始化 UserInfo。
1.3.7. Web 复制链接链接已复制到粘贴板!
1.3.7.1. 引入了集中式 TLS registry 复制链接链接已复制到粘贴板!
Red Hat build of Quarkus 3.15 引入了一个新的传输层安全(TLS) registry扩展 quarkus-tls-registry,其中包括以下功能:
应用程序的集中式 TLS 配置
在以前的版本中,TLS 配置分散在多个红帽构建的 Quarkus 扩展中,这有时会导致不一致。随着 TLS registry 的引入,您现在可以在一个位置完成 TLS 配置 application.properties 文件,然后从应用程序中的多个位置引用它。
邮件器、HTTP 服务器、REST 客户端和消息传递组件的集中配置
mailer
您可以使用 TLS 注册表配置
quarkus-mailer扩展。为了避免与其他 TLS 配置冲突,需要使用存储在 TLS registry 中的命名 TLS 配置。您可以使用quarkus.tls.<name> unset属性定义单独的命名配置。HTTP 服务器
您可以使用
quarkus.tls.<name> ClusterClaim 属性来配置 HTTP 服务器,为特定连接定义单独的命名配置。REST 客户端
您可以使用 TLS registry 而不是特定配置来配置
quarkus-rest-client扩展。Quarkus 消息传递
您可以使用
mp.messaging.incoming.your-channel.tls-configuration-name=<name> 和频道。如需更多信息,请参阅单个 Quarkus 消息传递 指南。quarkus.tls.<name>来配置 Quarkus 消息传递
如需更多信息,请参阅 Quarkus TLS registry 参考指南。
1.3.7.2. REST 客户端的 HTTP 透传代理 复制链接链接已复制到粘贴板!
使用 Quarkus REST 客户端时,您可能需要检查发送到服务器的请求,在处理 HTTPS 连接时,检查流量的最简单方法是通过直通代理。
使用红帽构建的 Quarkus 3.15,您可以为 REST 客户端添加 HTTP 直通代理。您可以使用此代理作为 wireshark 的目标,以获取 REST 客户端发送的请求内容。
要启用代理,请将 quarkus.rest-client.<client name>.enable-local-proxy 属性设置为 true。
此功能仅适用于 Quarkus REST 客户端,且仅适用于 dev 模式。
1.3.7.3. 在 HTTP 服务器启动时运行自定义逻辑 复制链接链接已复制到粘贴板!
随着红帽构建的 Quarkus 3.15,Vert.x HTTP 被改进。现在,您可以在 HTTP 服务器启动时运行自定义操作。
要做到这一点,您可以声明一个异步上下文和依赖注入(CDI)观察器方法。然后,当对应的 HTTP 服务器开始侦听配置的主机和端口时,红帽构建的 Quarkus 会触发以下 CDI 事件:
-
io.quarkus.vertx.http.HttpServerStart -
io.quarkus.vertx.http.HttpsServerStart -
io.quarkus.vertx.http.DomainSocketServerStart
如需更多信息,请参阅 Quarkus HTTP 参考指南。