public class EventPublicationInterceptor extends Object implements MethodInterceptor, ApplicationEventPublisherAware, InitializingBean
Interceptor that publishes an
ApplicationEvent to all ApplicationListeners
registered with an ApplicationEventPublisher after each
successful method invocation.
Note that this interceptor is only capable of publishing stateless
events configured via the
"applicationEventClass" property.
setApplicationEventClass(java.lang.Class<?>),
ApplicationEvent,
ApplicationListener,
ApplicationEventPublisher,
ApplicationContext| Constructor and Description |
|---|
EventPublicationInterceptor() |
| Modifier and Type | Method and Description |
|---|---|
void |
afterPropertiesSet()
Invoked by the containing
BeanFactory after it has set all bean properties
and satisfied BeanFactoryAware, ApplicationContextAware etc. |
Object |
invoke(MethodInvocation invocation)
Implement this method to perform extra treatments before and
after the invocation.
|
void |
setApplicationEventClass(Class<?> applicationEventClass)
Set the application event class to publish.
|
void |
setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
Set the ApplicationEventPublisher that this object runs in.
|
public void setApplicationEventClass(Class<?> applicationEventClass)
The event class must have a constructor with a single
Object argument for the event source. The interceptor
will pass in the invoked object.
IllegalArgumentException - if the supplied Class is
null or if it is not an ApplicationEvent subclass or
if it does not expose a constructor that takes a single Object argumentpublic void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
ApplicationEventPublisherAwareInvoked after population of normal bean properties but before an init callback like InitializingBean's afterPropertiesSet or a custom init-method. Invoked before ApplicationContextAware's setApplicationContext.
setApplicationEventPublisher in interface ApplicationEventPublisherAwareapplicationEventPublisher - event publisher to be used by this objectpublic void afterPropertiesSet()
throws Exception
InitializingBeanBeanFactory after it has set all bean properties
and satisfied BeanFactoryAware, ApplicationContextAware etc.
This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.
afterPropertiesSet in interface InitializingBeanException - in the event of misconfiguration (such as failure to set an
essential property) or if initialization fails for any other reason@Nullable public Object invoke(MethodInvocation invocation) throws Throwable
MethodInterceptorJoinpoint.proceed().invoke in interface MethodInterceptorinvocation - the method invocation joinpointJoinpoint.proceed();
might be intercepted by the interceptorThrowable - if the interceptors or the target object
throws an exception