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.config.BeanPostProcessor, org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.SmartInitializingSingleton, org.springframework.context.ApplicationContextAware, 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.context.ApplicationContextAware, org.springframework.beans.factory.InitializingBean, 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, Tomaz Fernandes
    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
      • setApplicationContext

        public void setApplicationContext​(org.springframework.context.ApplicationContext applicationContext)
                                   throws org.springframework.beans.BeansException
        Specified by:
        setApplicationContext in interface org.springframework.context.ApplicationContextAware
        Throws:
        org.springframework.beans.BeansException
      • 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.
        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 and other String/byte[] conversions. Default UTF-8.
        Parameters:
        charset - the charset.
        Since:
        2.2
      • afterPropertiesSet

        public void afterPropertiesSet()
                                throws java.lang.Exception
        Specified by:
        afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
        Throws:
        java.lang.Exception
      • 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)
      • 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)