0 day streak
java / beginner
Snippet

Processing Domain Events Asynchronously with EventListener

Spring supports the Observer pattern through application events. Combining @EventListener with @Async allows event consumers to process events in a separate worker thread. This prevents long-running operations—such as sending registration emails—from blocking the main request thread.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
@Component
public class UserNotificationListener {
@Async
@EventListener
public void handleUserRegistration(UserRegisteredEvent event) {
String userEmail = event.getEmail();
System.out.println("Sending asynchronous confirmation email to: " + userEmail);
}
}
spring
Breakdown
1
@Component
Registers this listener class as a Spring bean so that event listeners can be discovered.
2
@Async
Directs Spring to execute this listener method in a separate background thread pool.
3
@EventListener
Registers this method to be invoked whenever a matching event type is published.
4
public void handleUserRegistration(UserRegisteredEvent event) {
Defines the event payload type (UserRegisteredEvent) that triggers this listener.