Class 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 java.lang.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:
    RabbitListener, EnableRabbit, RabbitListenerConfigurer, RabbitListenerEndpointRegistrar, RabbitListenerEndpointRegistry, RabbitListenerEndpoint, MethodRabbitListenerEndpoint
    • Field Detail

      • RABBIT_EMPTY_STRING_ARGUMENTS_PROPERTY

        public static final java.lang.String RABBIT_EMPTY_STRING_ARGUMENTS_PROPERTY
        See Also:
        Constant Field Values
    • Constructor Detail

      • RabbitListenerAnnotationBeanPostProcessor

        public RabbitListenerAnnotationBeanPostProcessor()
    • Method Detail

      • getOrder

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

        public void setContainerFactoryBeanName​(java.lang.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​(java.lang.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​(java.nio.charset.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 java.lang.Object postProcessBeforeInitialization​(java.lang.Object bean,
                                                                java.lang.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 java.lang.Object postProcessAfterInitialization​(java.lang.Object bean,
                                                               java.lang.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 java.util.Collection<org.springframework.amqp.core.Declarable> processAmqpListener​(RabbitListener rabbitListener,
                                                                                                     java.lang.reflect.Method method,
                                                                                                     java.lang.Object bean,
                                                                                                     java.lang.String beanName)
      • processListener

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

        protected void assertBeanFactory()
      • noBeanFoundMessage

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

        protected java.lang.String resolveExpressionAsString​(java.lang.String value,
                                                             java.lang.String attribute)