Class KafkaListenerAnnotationBeanPostProcessor<K,​V>

  • Type Parameters:
    K - the key type.
    V - the value type.
    All Implemented Interfaces:
    org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.config.BeanPostProcessor, org.springframework.beans.factory.SmartInitializingSingleton, org.springframework.core.Ordered

    public class KafkaListenerAnnotationBeanPostProcessor<K,​V>
    extends java.lang.Object
    implements org.springframework.beans.factory.config.BeanPostProcessor, org.springframework.core.Ordered, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.SmartInitializingSingleton
    Bean post-processor that registers methods annotated with KafkaListener to be invoked by a Kafka message listener container created under the covers by a KafkaListenerContainerFactory according to the parameters of the annotation.

    Annotated methods can use flexible arguments as defined by KafkaListener.

    This post-processor is automatically registered by Spring's EnableKafka annotation.

    Auto-detect any KafkaListenerConfigurer 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 EnableKafka Javadoc for complete usage details.

    Author:
    Stephane Nicoll, Juergen Hoeller, Gary Russell, Artem Bilan, Dariusz Szablinski, Venil Noronha, Dimitri Penner, Filip Halemba
    See Also:
    KafkaListener, KafkaListenerErrorHandler, EnableKafka, KafkaListenerConfigurer, KafkaListenerEndpointRegistrar, KafkaListenerEndpointRegistry, KafkaListenerEndpoint, MethodKafkaListenerEndpoint
    • Constructor Detail

      • KafkaListenerAnnotationBeanPostProcessor

        public KafkaListenerAnnotationBeanPostProcessor()
    • Method Detail

      • getOrder

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

        public void setDefaultContainerFactoryBeanName​(java.lang.String containerFactoryBeanName)
        Set the name of the KafkaListenerContainerFactory to use by default.

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

        Parameters:
        containerFactoryBeanName - the KafkaListenerContainerFactory 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.
      • getMessageHandlerMethodFactory

        public org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory getMessageHandlerMethodFactory()
        Return the configured handler factory.
        Returns:
        the factory.
        Since:
        2.5.7
      • setBeanFactory

        public void setBeanFactory​(org.springframework.beans.factory.BeanFactory beanFactory)
        Making a BeanFactory available is optional; if not set, KafkaListenerConfigurer 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.
      • setCharset

        public void setCharset​(java.nio.charset.Charset charset)
        Set a charset to use when converting byte[] to String in method arguments. Default UTF-8.
        Parameters:
        charset - the charset.
        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
      • processKafkaListener

        protected void processKafkaListener​(KafkaListener kafkaListener,
                                            java.lang.reflect.Method method,
                                            java.lang.Object bean,
                                            java.lang.String beanName)
      • processListener

        protected void processListener​(MethodKafkaListenerEndpoint<?,​?> endpoint,
                                       KafkaListener kafkaListener,
                                       java.lang.Object bean,
                                       java.lang.Object adminTarget,
                                       java.lang.String beanName)