Prev Next

Spring / Spring Boot 4 Basics Interview Questions

How does Spring Boot 4 handle async processing with @Async?

@Async makes a method execute in a separate thread asynchronously, returning a CompletableFuture (or void) immediately while processing continues in the background. Spring Boot 4 automatically uses virtual threads when enabled.

// Enable async processing:
@SpringBootApplication
@EnableAsync
public class App { ... }

// Async service:
@Service
public class EmailService {

    // Fire-and-forget (no return value):
    @Async
    public void sendWelcomeEmail(String email) {
        // Runs in separate thread; caller continues immediately
        emailGateway.send(email, "Welcome!", buildWelcomeBody(email));
    }

    // Async with result:
    @Async
    public CompletableFuture<EmailStats> getEmailStats(String userId) {
        EmailStats stats = emailGateway.fetchStats(userId);  // slow I/O
        return CompletableFuture.completedFuture(stats);
    }
}

// Caller:
@Service
public class RegistrationService {

    public User register(RegisterRequest req) {
        User user = userRepo.save(new User(req));
        emailService.sendWelcomeEmail(user.email()); // returns immediately
        return user;  // registration complete; email sends in background
    }

    // Parallel async calls:
    public DashboardData loadDashboard(String userId) throws Exception {
        CompletableFuture<OrderStats>  orders  = orderService.getStats(userId);
        CompletableFuture<EmailStats>  emails  = emailService.getEmailStats(userId);
        CompletableFuture<PaymentInfo> payment = paymentService.getInfo(userId);

        // Wait for all 3 to complete (run in parallel)
        CompletableFuture.allOf(orders, emails, payment).join();
        return new DashboardData(orders.get(), emails.get(), payment.get());
    }
}

# Custom async executor thread pool:
spring:
  task:
    execution:
      pool:
        core-size: 5
        max-size: 20
        queue-capacity: 100
      thread-name-prefix: async-

What does @EnableAsync do in Spring Boot 4?
What return type should an @Async method use to allow the caller to wait for the result?

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