Example code:
CustomSpringEvent.java
public class CustomSpringEvent extends ApplicationEvent {
private String message;
public CustomSpringEvent(Object source, String message) {
super(source);
this.message = message;
}
public String getMessage() {
return message;
}
}
CustomSpringEventListener.java
@Component
public class CustomSpringEventListener implements ApplicationListener<CustomSpringEvent> {
@Override
public void onApplicationEvent(CustomSpringEvent event) {
System.out.println("[Shark-listener]Received spring custom event - " + event.getMessage());
}
}
CustomSpringEventPublisher.java
@Component
public class CustomSpringEventPublisher {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
public void publishCustomEvent(final String message) {
System.out.println("Publishing custom event. ");
CustomSpringEvent customSpringEvent = new CustomSpringEvent(this, message);
applicationEventPublisher.publishEvent(customSpringEvent);
}
}
DemoApplication.java
@SpringBootApplication
@RestController
public class DemoApplication {
@Autowired
CustomSpringEventPublisher publisher;
@Autowired
CustomSpringEventListener listener;
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/pub")
public void pub() {
publisher.publishCustomEvent("[Shark-pub]hello!");
}
}