Package org.springframework.context.event

# Class EventPublicationInterceptor

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

All Implemented Interfaces:
  `org.aopalliance.aop.Advice`, `org.aopalliance.intercept.Interceptor`, `org.aopalliance.intercept.MethodInterceptor`, `org.springframework.beans.factory.Aware`, `org.springframework.beans.factory.InitializingBean`, `ApplicationEventPublisherAware`

public class EventPublicationInterceptor extends Object implements org.aopalliance.intercept.MethodInterceptor, ApplicationEventPublisherAware, org.springframework.beans.factory.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

Constructors
Constructor
Description
`EventPublicationInterceptor()`

## Method Summary

Modifier and Type
Method
Description
`void`
`afterPropertiesSet()`
`Object`
`invoke(org.aopalliance.intercept.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 Details

### EventPublicationInterceptor

public EventPublicationInterceptor()

## Method Details

### 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

Specified by:
  `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`
Throws:
  `Exception`

### invoke

@Nullable public Object invoke(org.aopalliance.intercept.MethodInvocation invocation) throws Throwable

Specified by:
  `invoke` in interface `org.aopalliance.intercept.MethodInterceptor`
Throws:
  `Throwable`