弃用遗留配置类

在 Quarkus 3.19 中将整个 Quarkus 代码库和 Quarkiverse 扩展迁移到 @ConfigMapping 接口后,我们宣布弃用遗留配置类。

一些历史

2022年,我们在Quarkus中引入了基于`@ConfigMapping`注解接口的新的扩展配置基础设施。它们取代了Quarkus扩展中使用的旧版配置类,这些类存在一些问题且特定于扩展(不能在应用程序中使用)。

新的`@ConfigMapping`基础设施将扩展和应用程序配置统一在同一基础设施上。

在今年2月下旬发布的Quarkus 3.19k中,我们将所有核心扩展迁移到了这个新基础设施(除了一些为兼容性目的保留的类),并弃用了旧版配置类的支持,同时删除了几乎所有现有的配置类:我们保留了少数几个以备兼容。

扩展注解处理器也进行了修改,要求使用特定的选项` -AlegacyConfigRoot=true`。

我们的计划一直是淘汰旧版配置类,以便能够移除与之相关的所有机制,并提供一个统一的配置机制。

当前状态

Quarkus生态系统的当前状态如下:

  • 所有核心扩展都使用了新的基于`@ConfigMapping`的基础设施。

  • 所有Quarkiverse扩展都已更新为使用新的基于`@ConfigMapping`的基础设施(`quarkus-logging-json`除外,但我们有一个已准备好的拉取请求)。

  • 一些参与Ecosystem CI的其他扩展也已更新,例如Blaze-Persistence

我们知道你们中的一些人也开发自定义扩展,因此强烈建议尽快将您的自定义扩展迁移到`@ConfigMapping`,如果尚未完成的话。

您可以在我们的文档中找到更多关于此的信息,并在Quarkus Core仓库Quarkiverse扩展中找到大量示例。

在迁移过程中如有任何疑问,请在GitHub Discussions中提问,我们将乐意提供帮助。

3.25版本更新

在3.25版本中,当使用`-AlegacyConfigRoot=true`选项使用扩展注解处理器时,我们将抛出错误。

使用Quarkus 3.25将无法构建包含旧版配置类的扩展。

3.26版本更新

在3.26版本中,我们将移除所有对旧版配置类的支持,这意味着它们将不再工作。如果您的应用程序的某个扩展使用了任何旧版配置类,您的应用程序将无法构建。

请注意,自3.19.4版本以来,如果您应用程序中的任何扩展使用了旧版配置类,您将收到警告。

我们还将删除之前保留的所有兼容性类。

  • GlobalDevServicesConfig:请改用DevServicesConfig

  • HttpConfiguration:请改用VertxHttpConfig

  • HttpBuildTimeConfig:请改用VertxHttpBuildTimeConfig

反馈和问题

如果您对本次更改有任何反馈或疑问,请使用GitHub Discussionsquarkus-dev Google群组

加入我们

我们非常重视您的反馈,所以请报告错误,提出改进建议…… 让我们一起构建伟大的东西!

如果您是 Quarkus 用户或只是好奇,请不要害羞,加入我们热情的社区