Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions _posts/2025-07-03-legacy-config-classes-sunsetting.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
layout: post
title: 'Sunsetting legacy config classes'
date: 2025-07-03
tags: release
synopsis: 'After having migrated the whole Quarkus code base and Quarkiverse extensions to @ConfigMapping interfaces in Quarkus 3.19, we announce the sunsetting of legacy config classes.'
author: gsmet
---

After having migrated the whole Quarkus code base and Quarkiverse extensions to @ConfigMapping interfaces in Quarkus 3.19,
we announce the sunsetting of legacy config classes.

== Some history

In 2022, we introduced in Quarkus a new configuration infrastructure for extensions based on interfaces annotated with `@ConfigMapping`.
They were a replacement for the legacy config classes that were used in Quarkus extensions,
which came with several issues and were specific to extensions (you couldn't use them in applications).

The new `@ConfigMapping` infrastructure unified extension and application configuration on the same infrastructure.

In Quarkus 3.19k, released late February this year, we moved all the core extensions to this new infrastructure (except for some classes that were kept for compatibility purposes)
and deprecated the legacy config classes support, together with dropping close to all the existing config classes: we kept a few for compatibility reasons.

The extension annotation processor was also modified to require a specific option `-AlegacyConfigRoot=true`.

The plan has always been to sunset the legacy config classes so that we could remove all the machinery related to it,
and offer a single unified configuration mechanism.

== Current state

The current state of the public Quarkus ecosystem is the following:

- All the Core extensions are using the new ``@ConfigMapping``-based infrastructure.
- All the Quarkiverse extensions have been updated to use the new ``@ConfigMapping``-based infrastructure (except for `quarkus-logging-json` but we have a https://github.com/quarkiverse/quarkus-logging-json/pull/345[pull request ready]).
- Some other extensions participating to the Ecosystem CI have also been updated such as https://persistence.blazebit.com/[Blaze-Persistence].

We know some of you also develop custom extensions so we highly recommend moving your custom extensions to `@ConfigMapping` as soon as possible, if not already done.

You can find more information about it in https://quarkus.io/guides/writing-extensions#configuration[our documentation] and a ton of examples in the https://github.com/search?q=repo%3Aquarkusio%2Fquarkus%20%40ConfigMapping&type=code[Quarkus Core repository] or the https://github.com/search?q=org%3Aquarkiverse+%40ConfigMapping&type=code[Quarkiverse extensions].

If you have any questions while migrating, please ask them in https://github.com/quarkusio/quarkus/discussions/categories/q-a[GitHub Discussions], we will be happy to help.

== Coming in 3.25

In 3.25, we will throw an error when the extension annotation processor is used with `-AlegacyConfigRoot=true`.

**It won't be possible to build an extension containing legacy config classes with Quarkus 3.25 anymore.**

== Coming in 3.26

In 3.26, we will remove all support for legacy config classes, meaning they won't work anymore.
**If one of the extensions of your application is using any legacy config class, your application won't build.**

Note that since 3.19.4, you get a warning if any of the extensions in your application is using legacy config classes.

We will also drop all the compatibility classes we kept until then:

- `GlobalDevServicesConfig`: use `DevServicesConfig` instead
- `HttpConfiguration`: use `VertxHttpConfig` instead
- `HttpBuildTimeConfig`: use `VertxHttpBuildTimeConfig` instead

== Feedback and questions

If you have any feedback or questions regarding this change, please either use https://github.com/quarkusio/quarkus/discussions/categories/q-a[GitHub Discussions] or the https://groups.google.com/g/quarkus-dev[quarkus-dev Google groups].

== Come Join Us

We value your feedback a lot so please report bugs, ask for improvements... Let's build something great together!

If you are a Quarkus user or just curious, don't be shy and join our welcoming community:

* provide feedback on https://github.com/quarkusio/quarkus/issues[GitHub];
* craft some code and https://github.com/quarkusio/quarkus/pulls[push a PR];
* discuss with us on https://quarkusio.zulipchat.com/[Zulip] and on the https://groups.google.com/d/forum/quarkus-dev[mailing list];
* ask your questions on https://stackoverflow.com/questions/tagged/quarkus[Stack Overflow].
Loading