public class EventPublicationInterceptor extends java.lang.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
Modifier and Type | Field and Description |
---|---|
private java.lang.reflect.Constructor<?> |
applicationEventClassConstructor |
private ApplicationEventPublisher |
applicationEventPublisher |
Constructor and Description |
---|
EventPublicationInterceptor() |
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet()
Invoked by a BeanFactory after it has set all bean properties supplied
(and satisfied BeanFactoryAware and ApplicationContextAware).
|
java.lang.Object |
invoke(MethodInvocation invocation)
Implement this method to perform extra treatments before and
after the invocation.
|
void |
setApplicationEventClass(java.lang.Class<?> applicationEventClass)
Set the application event class to publish.
|
void |
setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)
Set the ApplicationEventPublisher that this object runs in.
|
private java.lang.reflect.Constructor<?> applicationEventClassConstructor
private ApplicationEventPublisher applicationEventPublisher
public void setApplicationEventClass(java.lang.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.
java.lang.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)
ApplicationEventPublisherAware
Invoked 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 ApplicationEventPublisherAware
applicationEventPublisher
- event publisher to be used by this objectpublic void afterPropertiesSet() throws java.lang.Exception
InitializingBean
This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.
afterPropertiesSet
in interface InitializingBean
java.lang.Exception
- in the event of misconfiguration (such
as failure to set an essential property) or if initialization fails.public java.lang.Object invoke(MethodInvocation invocation) throws java.lang.Throwable
MethodInterceptor
Joinpoint.proceed()
.invoke
in interface MethodInterceptor
invocation
- the method invocation joinpointJoinpoint.proceed()
;
might be intercepted by the interceptorjava.lang.Throwable
- if the interceptors or the target object
throws an exception