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:
  • 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