## org.springframework.context.event
Class EventPublicationInterceptor

    java.lang.Object
      org.springframework.context.event.EventPublicationInterceptor

All Implemented Interfaces:
  Advice, Interceptor, MethodInterceptor, InitializingBean, ApplicationEventPublisherAware

    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.

Author:
  Dmitriy Kopylenko, Juergen Hoeller, Rick Evans
See Also:
  `setApplicationEventClass(java.lang.Class)`, `ApplicationEvent`, `ApplicationListener`, `ApplicationEventPublisher`, `ApplicationContext`

Constructor Summary
`EventPublicationInterceptor()`

Method Summary
`void` `afterPropertiesSet()` Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
`Object` `invoke(MethodInvocation invocation)`
`void` `setApplicationEventClass(Class applicationEventClass)` Set the application event class to publish.
`void` `setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)` Set the ApplicationEventPublisher that this object runs in.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### EventPublicationInterceptor

    public EventPublicationInterceptor()

Method Detail

### setApplicationEventClass

    public void setApplicationEventClass(Class applicationEventClass)

  Set the application event class to publish.

  The event class must have a constructor with a single `Object` argument for the event source. The interceptor will pass in the invoked object.

  Throws:
    `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` argument

### setApplicationEventPublisher

    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher)

  Description copied from interface: `ApplicationEventPublisherAware`
  Set the ApplicationEventPublisher that this object runs in.

  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.

  Specified by:
    `setApplicationEventPublisher` in interface `ApplicationEventPublisherAware`
  Parameters:
    `applicationEventPublisher` - event publisher to be used by this object

### afterPropertiesSet

    public void afterPropertiesSet()
                            throws Exception

  Description copied from interface: `InitializingBean`
  Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

  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.

  Specified by:
    `afterPropertiesSet` in interface `InitializingBean`
  Throws:
    `Exception` - in the event of misconfiguration (such as failure to set an essential property) or if initialization fails.

### invoke

    public Object invoke(MethodInvocation invocation)
                  throws Throwable

  Specified by:
    `invoke` in interface `MethodInterceptor`
  Throws:
    `Throwable`