0
0
Spring Bootframework~20 mins

Event-driven architecture pattern in Spring Boot - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Event-Driven Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What happens when an event is published in Spring Boot?
In Spring Boot's event-driven architecture, when an event is published using ApplicationEventPublisher, what is the immediate behavior?
Spring Boot
public class MyEvent extends ApplicationEvent {
    public MyEvent(Object source) {
        super(source);
    }
}

@Component
public class MyEventListener {
    @EventListener
    public void handleMyEvent(MyEvent event) {
        System.out.println("Event received: " + event.getSource());
    }
}

// Somewhere in a service
applicationEventPublisher.publishEvent(new MyEvent(this));
AThe event is queued and listeners are called only when the application context is refreshed.
BListeners are called asynchronously in separate threads after publishEvent returns.
CAll listeners for MyEvent are called synchronously in the same thread before publishEvent returns.
DListeners are called only if explicitly polled by the publisher after publishing.
Attempts:
2 left
💡 Hint
Think about how Spring's default event publishing works in terms of thread execution.
📝 Syntax
intermediate
2:00remaining
Identify the correct way to declare an event listener method in Spring Boot
Which of the following method declarations correctly listens to a custom event OrderCreatedEvent in Spring Boot?
Spring Boot
public class OrderCreatedEvent extends ApplicationEvent {
    public OrderCreatedEvent(Object source) {
        super(source);
    }
}
A
@EventListener
public void onOrderCreated(OrderCreatedEvent event) { /* handle event */ }
B
@EventListener(OrderCreatedEvent.class)
public void onOrderCreated() { /* handle event */ }
Cpublic void onOrderCreated(@EventListener OrderCreatedEvent event) { /* handle event */ }
D
@EventListener
public void onOrderCreated(Object event) { /* handle event */ }
Attempts:
2 left
💡 Hint
Look for the correct annotation placement and method signature.
🔧 Debug
advanced
2:00remaining
Why does this Spring Boot event listener not get called?
Given this listener class, why is the event handler method never invoked when the event is published?
Spring Boot
@Component
public class PaymentListener {
    public void handlePaymentEvent(PaymentEvent event) {
        System.out.println("Payment processed");
    }
}

// Event published elsewhere
applicationEventPublisher.publishEvent(new PaymentEvent(this));
AThe method is missing the @EventListener annotation, so Spring does not recognize it as an event handler.
BThe event publisher must call handlePaymentEvent directly for the listener to work.
CThe event class PaymentEvent must extend RuntimeException to be handled.
DThe class is not annotated with @Service, so it cannot listen to events.
Attempts:
2 left
💡 Hint
Check if the listener method is properly marked to receive events.
state_output
advanced
2:00remaining
What is the output order when multiple listeners handle the same event?
Consider two listeners for the same event UserRegisteredEvent with different @Order annotations. What is the order of their execution?
Spring Boot
@Component
public class ListenerA {
    @EventListener
    @Order(2)
    public void onUserRegistered(UserRegisteredEvent event) {
        System.out.println("Listener A");
    }
}

@Component
public class ListenerB {
    @EventListener
    @Order(1)
    public void onUserRegistered(UserRegisteredEvent event) {
        System.out.println("Listener B");
    }
}

// Event published
applicationEventPublisher.publishEvent(new UserRegisteredEvent(this));
AOnly Listener A prints because it has higher order.
BListener B prints first, then Listener A.
CListener A prints first, then Listener B.
DListeners print in random order.
Attempts:
2 left
💡 Hint
Lower @Order value means higher priority.
🧠 Conceptual
expert
2:00remaining
Which statement best describes the advantage of event-driven architecture in Spring Boot?
Select the option that best explains why using event-driven architecture benefits a Spring Boot application.
AIt eliminates the need for dependency injection by using events instead.
BIt forces all components to run synchronously, ensuring strict execution order.
CIt requires all events to be stored in a database before processing, improving reliability.
DIt decouples components by allowing them to communicate through events, improving modularity and scalability.
Attempts:
2 left
💡 Hint
Think about how events help components work independently.