MethodInterceptor Interceptor that publishes an
ApplicationEvent to all ApplicationListeners
registered with an ApplicationEventPublisher after each
successful method invocation.
Multicasts all events to all registered listeners, leaving it up to
the listeners to ignore events that they are not interested in.
Listeners will usually perform corresponding instanceof
checks on the passed-in event object.
By default, all listeners are invoked in the calling thread.
This allows the danger of a rogue listener blocking the entire application,
but adds minimal overhead.