import org.springframework.context.ApplicationEvent;
public class EmailRegistrationEvent extends ApplicationEvent {
private final String email;
public EmailRegistrationEvent(Object source, String email) {
super(source);
this.email = email;
}
public String getEmail() {
return email;
}
}
import org.springframework.context.ApplicationEvent;
public class PromotionEvent extends ApplicationEvent {
private final String promotionMessage;
public PromotionEvent(Object source, String promotionMessage) {
super(source);
this.promotionMessage = promotionMessage;
}
public String getPromotionMessage() {
return promotionMessage;
}
}
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Component;
@Component
public class EventPublisher {
private final ApplicationEventPublisher eventPublisher;
public EventPublisher(ApplicationEventPublisher eventPublisher) {
this.eventPublisher = eventPublisher;
}
public void publishEmailRegistrationEvent(String email) {
EmailRegistrationEvent event = new EmailRegistrationEvent(this, email);
eventPublisher.publishEvent(event);
}
public void publishPromotionEvent(String promotionMessage) {
PromotionEvent event = new PromotionEvent(this, promotionMessage);
eventPublisher.publishEvent(event);
}
}
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
@Component
public class EmailRegistrationEventListener implements ApplicationListener<EmailRegistrationEvent> {
@Override
public void onApplicationEvent(EmailRegistrationEvent event) {
String email = event.getEmail();
System.out.println("Email Registration Event Received: " + email);
}
}
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
@Component
public class PromotionEventListener implements ApplicationListener<PromotionEvent> {
@Override
public void onApplicationEvent(PromotionEvent event) {
String promotionMessage = event.getPromotionMessage();
System.out.println("Promotion Event Received: " + promotionMessage);
}
}
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class GenericEventApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(GenericEventApplication.class, args);
EventPublisher eventPublisher = context.getBean(EventPublisher.class);
eventPublisher.publishEmailRegistrationEvent("user@example.com");
eventPublisher.publishPromotionEvent("50% off on selected items!");
context.close();
}
}