Prev Next

Spring / Spring Boot 4 Basics Interview Questions

What are @Retryable and @ConcurrencyLimit in Spring Boot 4 and how do they work?

Spring Boot 4 (via Spring Framework 7) brings built-in resilience patterns directly into the Spring context. Previously, retry required the separate spring-retry dependency plus @EnableRetry. Spring Boot 4 ships these capabilities as first-class features.

// Spring Boot 3 (required separate dependency + @EnableRetry):
// pom.xml: spring-retry dependency
// Config class: @EnableRetry
@Service
public class StockService {
    @Retryable(value = {NetworkException.class}, maxAttempts = 2)
    public void updateStock() { ... }
}

// Spring Boot 4: works out of the box with spring-boot-starter-resilience
// No @EnableRetry needed!
@Service
public class StockService {

    // Retry with exponential backoff and jitter
    @Retryable(
        includes  = NetworkException.class,  // exception types to retry on
        maxRetries = 3,                       // number of retry attempts
        backoff    = @Backoff(
            delay      = 500,                // initial delay in ms
            multiplier = 2.0,                // exponential multiplier
            random     = true                // add jitter
        )
    )
    public Order fetchOrderFromRemote(String orderId) {
        return remoteService.fetch(orderId); // automatically retried on NetworkException
    }

    // Bulkhead pattern: limit concurrent callers
    @ConcurrencyLimit(limit = 5)  // max 5 concurrent executions
    public void processPayment(Payment payment) {
        // Only 5 threads can execute this simultaneously
        // 6th caller blocks until one slot frees up
        paymentGateway.process(payment);
    }

    // Combining both:
    @Retryable(includes = NetworkException.class, maxRetries = 3)
    @ConcurrencyLimit(limit = 10)
    public void updateStock() {
        externalInventoryApi.update();
    }
}

@ConcurrencyLimit implements the Bulkhead pattern from resilience engineering. It is particularly valuable with virtual threads (Java 21+), where it prevents a burst of cheap virtual threads from overwhelming a downstream service with simultaneous requests.

What is the key improvement of @Retryable in Spring Boot 4 compared to Spring Boot 3?
What design pattern does @ConcurrencyLimit implement?

More Related questions...

What is Spring Boot 4 and when was it released? What is the complete modularisation of Spring Boot 4 and why does it matter? What is the Java version baseline in Spring Boot 4 and what Java features does it unlock? What is Jakarta EE 11 and what changes does it bring in Spring Boot 4? How does Spring Boot 4 auto-configuration work and what is the new @AutoConfiguration annotation? What is native API versioning in Spring Boot 4 and how do you use it? What are JSpecify nullability annotations in Spring Boot 4 and why are they important? What changed with Jackson in Spring Boot 4 and what are the migration considerations? What are @Retryable and @ConcurrencyLimit in Spring Boot 4 and how do they work? What are HTTP Service Clients in Spring Boot 4 and how do you define them? What are the key breaking changes removed in Spring Boot 4 that were deprecated in Boot 3? How does Spring Boot 4 handle dependency injection and what are the core stereotypes? What is Spring Boot's application.properties / application.yml and how does configuration work? What are Spring Boot profiles and how do you use them for environment-specific configuration? How does Spring Boot 4 testing work with @SpringBootTest and test slices? What is Spring Boot Actuator and what does it provide in Boot 4? How does Spring Boot 4 handle data access with Spring Data JPA? What is Spring Security in Spring Boot 4 and what are the key Boot 4 changes? What is the Spring Boot starter parent (POM) and how do you set up a Spring Boot 4 project? What is @SpringBootApplication and what does it combine? How do you build REST APIs with Spring Boot 4 using @RestController? How does Bean Validation work with Spring Boot 4? What is Spring Boot's embedded server and how do you configure it? What is Spring Boot's transaction management with @Transactional? What is Spring Boot's caching abstraction and how do you use it? What is Spring Boot's observability stack in Boot 4 with Micrometer and OpenTelemetry? How does Spring Boot 4 support GraalVM native images? What is Spring WebFlux and reactive programming in Spring Boot 4? What is Spring Boot's exception handling with @RestControllerAdvice? How do you use Spring Data MongoDB and other NoSQL stores in Spring Boot 4? How does Spring Boot 4 handle async processing with @Async? What is Spring Boot's externalized configuration with @Value and @ConfigurationProperties? What is Spring Boot's messaging support with Kafka in Boot 4? How do you schedule tasks in Spring Boot 4 with @Scheduled? What is Spring AI and how does it integrate with Spring Boot 4? How does Spring Boot 4 handle logging configuration? What is Spring Boot 4 migration from Boot 3: complete checklist and common pitfalls? What is Spring Boot DevTools and how does it improve development productivity? How does Spring Boot 4 support containerised deployments with Docker? What is the Spring Boot 4 vs Spring Boot 3 comparison and what are the key takeaways?
Show more question and Answers...


Comments & Discussions