Return to site

๐Ÿ’ฅ QUARKUS VS SPRING: DECLARING A SERVICE THE CLEAN WAY

September 27, 2025

๐Ÿš€ QUARKUS WAY

@ApplicationScoped

public class LoggerService {

@Inject

@ConfigProperty(name = "logging.verbose", defaultValue = "false")

boolean verbose;

public void log(String message) {

if (verbose) System.out.println("[VERBOSE] " + message);

}

}

๐ŸŒฑ SPRING WAY

@Service

public class LoggerService {

@Value("${logging.verbose:false}")

private boolean verbose;

public void log(String message) {

if (verbose) System.out.println("[VERBOSE] " + message);

}

}

๐Ÿ” KEY DIFFERENCES

๐Ÿ”ธ Bean discovery

- Quarkus: CDI annotations (@ApplicationScoped, @Inject).

- Spring: Stereotypes (@Service, @Component) + @Autowired (constructor injection recommended).

๐Ÿ”ธ Scope

- Quarkus: @ApplicationScoped = app-wide singleton.

- Spring: default scope is singleton via @Service.

๐Ÿ”ธ Config

- Quarkus: MicroProfile Config (@ConfigProperty).

- Spring: @Value or @ConfigurationProperties.

๐Ÿ”ธ Startup & footprint

- Quarkus favors fast startup & low RSS (great for containers/GraalVM).

- Spring offers rich ecosystem & autoconfiguration.

๐Ÿ”ธ Testing & mocks

- Quarkus: @QuarkusTest, @InjectMock.

- Spring: @SpringBootTest, @MockBean.

๐Ÿ” MIGRATION TIPS (SPRING โžœ QUARKUS)

- Replace @Service/@Component โžœ @ApplicationScoped (or appropriate CDI scope).

- Swap @Autowired/@Value โžœ @Inject and @ConfigProperty.

- Move Boot starters โžœ Quarkus extensions (quarkus-smallrye-config, quarkus-rest, etc.).

- Replace Spring annotations/APIs with CDI/JAX-RS counterparts (e.g., @RestController โžœ @Path + @GET).

- Tests: @SpringBootTest โžœ @QuarkusTest, @MockBean โžœ @InjectMock.

- Use the Quarkus Dev Mode (mvn quarkus:dev) to iterate quickly and catch config/DI issues early.

โœ… TAKEAWAYS

- Same concept, different idioms: CDI (Quarkus) vs Spring stereotypes.

- Config is first-class in both; choose MicroProfile Config or Spring Config accordingly.

- Quarkus shines for container/GraalVM use cases; Spring shines with its ecosystem & autoconfig.

- Migration is mostly annotation & API mappingโ€”start with DI, config, and web layers.

#๏ธโƒฃ #Java #Quarkus #Spring #SpringBoot #CDI #JakartaEE #MicroProfile #Microservices #CleanCode #DevTips #CloudNative #GraalVM