Return to site

SPRING VS QUARKUS: CONFIG INJECTION KNOCKOUT โš”๏ธ

September 27, 2025

TLDR ๐Ÿš€

@ConfigProperty (Quarkus/MicroProfile) โ‰ˆ Spring @Value for simple values, but no SpEL in Quarkus. For grouped properties, use @ConfigMapping (Quarkus) vs @ConfigurationProperties (Spring). โœ…

SAME IDEA (SIMPLE VALUES) ๐Ÿ”

- Inject configuration values into code ๐Ÿ”Œ

- Built-in type conversion (int, boolean, duration, lists) ๐Ÿ”„

- Defaults supported ๐ŸŸฉ

KEY DIFFERENCES ๐Ÿงฉ

- SPEL: Spring @Value supports SpEL (#{...}); Quarkus @ConfigProperty does not โŒ

- OPTIONALS: Quarkus easily injects Optionalใ€ˆTใ€‰; Spring commonly uses :default syntax ๐Ÿงฐ

- STRUCTURED CONFIG: Prefer @ConfigMapping in Quarkus for cohesive groups (like Springโ€™s @ConfigurationProperties) ๐Ÿ—‚๏ธ

CODE QUICK GLANCE ๐Ÿ› ๏ธ

1๏ธโƒฃ Spring (simple + default):

@Value("${app.timeout:30}")

int timeout;

2๏ธโƒฃ Quarkus (simple + default):

@Inject

@org.eclipse.microprofile.config.inject.ConfigProperty(name = "app.timeout", defaultValue = "30")

int timeout;

3๏ธโƒฃ Quarkus (structured):

import io.smallrye.config.ConfigMapping;

import io.smallrye.config.WithDefault;

@ConfigMapping(prefix = "app")

interface AppConfig {

@WithDefault("30") int timeout();

String name();

}

WHEN TO USE WHAT ๐ŸŽฏ

- Simple single values โ†’ @Value (Spring) or @ConfigProperty (Quarkus)

- Many related properties โ†’ @ConfigurationProperties (Spring) or @ConfigMapping (Quarkus)

MIGRATION TIP ๐Ÿงญ

Moving from Spring to Quarkus? Remove SpEL in config and migrate grouped properties to @ConfigMapping for a clean, type-safe setup. โœจ

#Java #Spring #SpringBoot #Quarkus #MicroProfile #JakartaEE #Configuration #CloudNative #DeveloperTips #Migration #CleanCode