Package org.springframework.batch.core.listener

# Class AbstractListenerFactoryBean<T>

java.lang.Object
org.springframework.batch.core.listener.AbstractListenerFactoryBean<T>

All Implemented Interfaces:
  `org.springframework.beans.factory.FactoryBean<Object>`, `org.springframework.beans.factory.InitializingBean`

Direct Known Subclasses:
  `JobListenerFactoryBean`, `StepListenerFactoryBean`

public abstract class AbstractListenerFactoryBean<T> extends Object implements org.springframework.beans.factory.FactoryBean<Object>, org.springframework.beans.factory.InitializingBean
`FactoryBean` implementation that builds a listener based on the various lifecycle methods or annotations that are provided. There are three possible ways of having a method called as part of a listener lifecycle:

- Interface implementation: By implementing any of the subclasses of a listener interface, methods on said interface will be called
- Annotations: Annotating a method will result in registration.
- String name of the method to be called, which is tied to a `ListenerMetaData` value in the metaDataMap.

It should be noted that methods obtained by name or annotation that don't match the listener method signatures to which they belong will cause errors. However, it is acceptable to have no parameters at all. If the same method is marked in more than one way. (i.e. the method name is given and it is annotated) the method will only be called once. However, if the same class has multiple methods tied to a particular listener, each method will be called. Also note that the same annotations cannot be applied to two separate methods in a single class.

Since:
  2.0
Author:
  Lucas Ward, Dan Garrette
See Also:
  - `ListenerMetaData`

- ## Field Summary

  ### Fields inherited from interface org.springframework.beans.factory.FactoryBean

  `OBJECT_TYPE_ATTRIBUTE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractListenerFactoryBean()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `afterPropertiesSet()`
  `protected abstract Class<?>`
  `getDefaultListenerClass()`
  `protected abstract ListenerMetaData`
  `getMetaDataFromPropertyName(String propertyName)`
  `protected abstract ListenerMetaData[]`
  `getMetaDataValues()`
  `protected MethodInvoker`
  `getMethodInvokerByName(String methodName, Object candidate, Class<?>... params)`
  `Object`
  `getObject()`
  `static boolean`
  `isListener(Object target, Class<?> listenerType, ListenerMetaData[] metaDataValues)`
  Convenience method to check whether the given object is or can be made into a listener.
  `boolean`
  `isSingleton()`
  `void`
  `setDelegate(Object delegate)`
  `void`
  `setMetaDataMap(Map<String,String> metaDataMap)`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface org.springframework.beans.factory.FactoryBean

  `getObjectType`

- ## Constructor Details

  - ### AbstractListenerFactoryBean

    public AbstractListenerFactoryBean()

- ## Method Details

  - ### getObject

    public Object getObject()
    Specified by:
      `getObject` in interface `org.springframework.beans.factory.FactoryBean<T>`

  - ### getMetaDataFromPropertyName

    protected abstract ListenerMetaData getMetaDataFromPropertyName(String propertyName)

  - ### getMetaDataValues

    protected abstract ListenerMetaData[] getMetaDataValues()

  - ### getDefaultListenerClass

    protected abstract Class<?> getDefaultListenerClass()

  - ### getMethodInvokerByName

    protected MethodInvoker getMethodInvokerByName(String methodName, Object candidate, Class<?>... params)

  - ### isSingleton

    public boolean isSingleton()
    Specified by:
      `isSingleton` in interface `org.springframework.beans.factory.FactoryBean<T>`

  - ### setDelegate

    public void setDelegate(Object delegate)

  - ### setMetaDataMap

    public void setMetaDataMap(Map<String,String> metaDataMap)

  - ### afterPropertiesSet

    public void afterPropertiesSet() throws Exception
    Specified by:
      `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`
    Throws:
      `Exception`

  - ### isListener

    public static boolean isListener(Object target, Class<?> listenerType, ListenerMetaData[] metaDataValues)
    Convenience method to check whether the given object is or can be made into a listener.
    Parameters:
      `target` - the object to check
      `listenerType` - the class of the listener.
      `metaDataValues` - array of `ListenerMetaData`.
    Returns:
      true if the delegate is an instance of any of the listener interface, or contains the marker annotations