Class RabbitListenerAnnotationBeanPostProcessor

java.lang.Object
org.springframework.amqp.rabbit.annotation.RabbitListenerAnnotationBeanPostProcessor
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.config.BeanPostProcessor, org.springframework.beans.factory.SmartInitializingSingleton, org.springframework.context.EnvironmentAware, org.springframework.core.Ordered
Direct Known Subclasses:
MultiRabbitListenerAnnotationBeanPostProcessor

public class RabbitListenerAnnotationBeanPostProcessor extends Object implements org.springframework.beans.factory.config.BeanPostProcessor, org.springframework.core.Ordered, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.context.EnvironmentAware, org.springframework.beans.factory.SmartInitializingSingleton
Bean post-processor that registers methods annotated with RabbitListener to be invoked by a AMQP message listener container created under the cover by a RabbitListenerContainerFactory according to the parameters of the annotation.

Annotated methods can use flexible arguments as defined by RabbitListener.

This post-processor is automatically registered by Spring's <rabbit:annotation-driven> XML element, and also by the EnableRabbit annotation.

Auto-detect any RabbitListenerConfigurer instances in the container, allowing for customization of the registry to be used, the default container factory or for fine-grained control over endpoints registration. See EnableRabbit Javadoc for complete usage details.

Since:
1.4
See Also:
  • Field Details

  • Constructor Details

    • RabbitListenerAnnotationBeanPostProcessor

      public RabbitListenerAnnotationBeanPostProcessor()
  • Method Details

    • getOrder

      public int getOrder()
      Specified by:
      getOrder in interface org.springframework.core.Ordered
    • setEndpointRegistry

      public void setEndpointRegistry(RabbitListenerEndpointRegistry endpointRegistry)
      Set the RabbitListenerEndpointRegistry that will hold the created endpoint and manage the lifecycle of the related listener container.
      Parameters:
      endpointRegistry - the RabbitListenerEndpointRegistry to set.
    • setContainerFactoryBeanName

      public void setContainerFactoryBeanName(String containerFactoryBeanName)
      Set the name of the RabbitListenerContainerFactory to use by default.

      If none is specified, "rabbitListenerContainerFactory" is assumed to be defined.

      Parameters:
      containerFactoryBeanName - the RabbitListenerContainerFactory bean name.
    • setMessageHandlerMethodFactory

      public void setMessageHandlerMethodFactory(org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory messageHandlerMethodFactory)
      Set the MessageHandlerMethodFactory to use to configure the message listener responsible to serve an endpoint detected by this processor.

      By default, DefaultMessageHandlerMethodFactory is used and it can be configured further to support additional method arguments or to customize conversion and validation support. See DefaultMessageHandlerMethodFactory Javadoc for more details.

      Parameters:
      messageHandlerMethodFactory - the MessageHandlerMethodFactory instance.
    • setBeanFactory

      public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
      Making a BeanFactory available is optional; if not set, RabbitListenerConfigurer beans won't get autodetected and an endpoint registry has to be explicitly configured.
      Specified by:
      setBeanFactory in interface org.springframework.beans.factory.BeanFactoryAware
      Parameters:
      beanFactory - the BeanFactory to be used.
    • setBeanClassLoader

      public void setBeanClassLoader(ClassLoader classLoader)
      Specified by:
      setBeanClassLoader in interface org.springframework.beans.factory.BeanClassLoaderAware
    • setEnvironment

      public void setEnvironment(org.springframework.core.env.Environment environment)
      Specified by:
      setEnvironment in interface org.springframework.context.EnvironmentAware
    • setCharset

      public void setCharset(Charset charset)
      Set a charset for byte[] to String method argument conversion.
      Parameters:
      charset - the charset (default UTF-8).
      Since:
      2.2
    • afterSingletonsInstantiated

      public void afterSingletonsInstantiated()
      Specified by:
      afterSingletonsInstantiated in interface org.springframework.beans.factory.SmartInitializingSingleton
    • postProcessBeforeInitialization

      public Object postProcessBeforeInitialization(Object bean, String beanName) throws org.springframework.beans.BeansException
      Specified by:
      postProcessBeforeInitialization in interface org.springframework.beans.factory.config.BeanPostProcessor
      Throws:
      org.springframework.beans.BeansException
    • postProcessAfterInitialization

      public Object postProcessAfterInitialization(Object bean, String beanName) throws org.springframework.beans.BeansException
      Specified by:
      postProcessAfterInitialization in interface org.springframework.beans.factory.config.BeanPostProcessor
      Throws:
      org.springframework.beans.BeansException
    • processAmqpListener

      protected Collection<org.springframework.amqp.core.Declarable> processAmqpListener(RabbitListener rabbitListener, Method method, Object bean, String beanName)
    • processListener

      protected Collection<org.springframework.amqp.core.Declarable> processListener(MethodRabbitListenerEndpoint endpoint, RabbitListener rabbitListener, Object bean, Object target, String beanName)
    • assertBeanFactory

      protected void assertBeanFactory()
    • noBeanFoundMessage

      protected String noBeanFoundMessage(Object target, String listenerBeanName, String requestedBeanName, Class<?> expectedClass)
    • resolveExpressionAsString

      protected String resolveExpressionAsString(String value, String attribute)