
Spring allows us to publish ApplicationEvent instances using the managed ApplicationEventPublisher instance.
Each such ApplicationEvent can be consumed by the interested parties by annotating methods with @EventListener or
@TransactionalEventListener.