|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: 'Sunsetting legacy config classes' |
| 4 | +date: 2025-07-03 |
| 5 | +tags: release |
| 6 | +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.' |
| 7 | +author: gsmet |
| 8 | +--- |
| 9 | + |
| 10 | +After having migrated the whole Quarkus code base and Quarkiverse extensions to @ConfigMapping interfaces in Quarkus 3.19, |
| 11 | +we announce the sunsetting of legacy config classes. |
| 12 | + |
| 13 | +== Some history |
| 14 | + |
| 15 | +In 2022, we introduced in Quarkus a new configuration infrastructure for extensions based on interfaces annotated with `@ConfigMapping`. |
| 16 | +They were a replacement for the legacy config classes that were used in Quarkus extensions, |
| 17 | +which came with several issues and were specific to extensions (you couldn't use them in applications). |
| 18 | + |
| 19 | +The new `@ConfigMapping` infrastructure unified extension and application configuration on the same infrastructure. |
| 20 | + |
| 21 | +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) |
| 22 | +and deprecated the legacy config classes support, together with dropping close to all the existing config classes: we kept a few for compatibility reasons. |
| 23 | + |
| 24 | +The extension annotation processor was also modified to require a specific option `-AlegacyConfigRoot=true`. |
| 25 | + |
| 26 | +The plan has always been to sunset the legacy config classes so that we could remove all the machinery related to it, |
| 27 | +and offer a single unified configuration mechanism. |
| 28 | + |
| 29 | +== Current state |
| 30 | + |
| 31 | +The current state of the public Quarkus ecosystem is the following: |
| 32 | + |
| 33 | +- All the Core extensions are using the new ``@ConfigMapping``-based infrastructure. |
| 34 | +- 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]). |
| 35 | +- Some other extensions participating to the Ecosystem CI have also been updated such as https://persistence.blazebit.com/[Blaze-Persistence]. |
| 36 | + |
| 37 | +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. |
| 38 | + |
| 39 | +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]. |
| 40 | + |
| 41 | +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. |
| 42 | + |
| 43 | +== Coming in 3.25 |
| 44 | + |
| 45 | +In 3.25, we will throw an error when the extension annotation processor is used with `-AlegacyConfigRoot=true`. |
| 46 | + |
| 47 | +**It won't be possible to build an extension containing legacy config classes with Quarkus 3.25 anymore.** |
| 48 | + |
| 49 | +== Coming in 3.26 |
| 50 | + |
| 51 | +In 3.26, we will remove all support for legacy config classes, meaning they won't work anymore. |
| 52 | +**If one of the extensions of your application is using any legacy config class, your application won't build.** |
| 53 | + |
| 54 | +Note that since 3.19.4, you get a warning if any of the extensions in your application is using legacy config classes. |
| 55 | + |
| 56 | +We will also drop all the compatibility classes we kept until then: |
| 57 | + |
| 58 | +- `GlobalDevServicesConfig`: use `DevServicesConfig` instead |
| 59 | +- `HttpConfiguration`: use `VertxHttpConfig` instead |
| 60 | +- `HttpBuildTimeConfig`: use `VertxHttpBuildTimeConfig` instead |
| 61 | + |
| 62 | +== Feedback and questions |
| 63 | + |
| 64 | +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]. |
| 65 | + |
| 66 | +== Come Join Us |
| 67 | + |
| 68 | +We value your feedback a lot so please report bugs, ask for improvements... Let's build something great together! |
| 69 | + |
| 70 | +If you are a Quarkus user or just curious, don't be shy and join our welcoming community: |
| 71 | + |
| 72 | + * provide feedback on https://github.com/quarkusio/quarkus/issues[GitHub]; |
| 73 | + * craft some code and https://github.com/quarkusio/quarkus/pulls[push a PR]; |
| 74 | + * discuss with us on https://quarkusio.zulipchat.com/[Zulip] and on the https://groups.google.com/d/forum/quarkus-dev[mailing list]; |
| 75 | + * ask your questions on https://stackoverflow.com/questions/tagged/quarkus[Stack Overflow]. |
0 commit comments