Class KafkaListenerAnnotationBeanPostProcessor<K,V>
- java.lang.Object
-
- org.springframework.kafka.annotation.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.SmartInitializingSingletonBean post-processor that registers methods annotated withKafkaListenerto be invoked by a Kafka message listener container created under the covers by aKafkaListenerContainerFactoryaccording 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
EnableKafkaannotation.Auto-detect any
KafkaListenerConfigurerinstances in the container, allowing for customization of the registry to be used, the default container factory or for fine-grained control over endpoints registration. SeeEnableKafkaJavadoc for complete usage details.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceKafkaListenerAnnotationBeanPostProcessor.AnnotationEnhancerPost processes each set of annotation attributes.
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringDEFAULT_KAFKA_LISTENER_CONTAINER_FACTORY_BEAN_NAMEThe bean name of the defaultKafkaListenerContainerFactory.
-
Constructor Summary
Constructors Constructor Description KafkaListenerAnnotationBeanPostProcessor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidafterPropertiesSet()voidafterSingletonsInstantiated()protected voidassertBeanFactory()org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactorygetMessageHandlerMethodFactory()Return the configured handler factory.intgetOrder()protected java.lang.StringnoBeanFoundMessage(java.lang.Object target, java.lang.String listenerBeanName, java.lang.String requestedBeanName, java.lang.Class<?> expectedClass)java.lang.ObjectpostProcessAfterInitialization(java.lang.Object bean, java.lang.String beanName)java.lang.ObjectpostProcessBeforeInitialization(java.lang.Object bean, java.lang.String beanName)protected voidprocessKafkaListener(KafkaListener kafkaListener, java.lang.reflect.Method method, java.lang.Object bean, java.lang.String beanName)protected voidprocessListener(MethodKafkaListenerEndpoint<?,?> endpoint, KafkaListener kafkaListener, java.lang.Object bean, java.lang.String beanName)voidsetApplicationContext(org.springframework.context.ApplicationContext applicationContext)voidsetBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)Making aBeanFactoryavailable is optional; if not set,KafkaListenerConfigurerbeans won't get autodetected and anendpoint registryhas to be explicitly configured.voidsetCharset(java.nio.charset.Charset charset)Set a charset to use when converting byte[] to String in method arguments.voidsetDefaultContainerFactoryBeanName(java.lang.String containerFactoryBeanName)Set the name of theKafkaListenerContainerFactoryto use by default.voidsetEndpointRegistry(KafkaListenerEndpointRegistry endpointRegistry)Set theKafkaListenerEndpointRegistrythat will hold the created endpoint and manage the lifecycle of the related listener container.voidsetMessageHandlerMethodFactory(org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory messageHandlerMethodFactory)Set theMessageHandlerMethodFactoryto use to configure the message listener responsible to serve an endpoint detected by this processor.
-
-
-
Field Detail
-
DEFAULT_KAFKA_LISTENER_CONTAINER_FACTORY_BEAN_NAME
public static final java.lang.String DEFAULT_KAFKA_LISTENER_CONTAINER_FACTORY_BEAN_NAME
The bean name of the defaultKafkaListenerContainerFactory.- See Also:
- Constant Field Values
-
-
Method Detail
-
getOrder
public int getOrder()
- Specified by:
getOrderin interfaceorg.springframework.core.Ordered
-
setEndpointRegistry
public void setEndpointRegistry(KafkaListenerEndpointRegistry endpointRegistry)
Set theKafkaListenerEndpointRegistrythat will hold the created endpoint and manage the lifecycle of the related listener container.- Parameters:
endpointRegistry- theKafkaListenerEndpointRegistryto set.
-
setDefaultContainerFactoryBeanName
public void setDefaultContainerFactoryBeanName(java.lang.String containerFactoryBeanName)
Set the name of theKafkaListenerContainerFactoryto use by default.If none is specified, "kafkaListenerContainerFactory" is assumed to be defined.
- Parameters:
containerFactoryBeanName- theKafkaListenerContainerFactorybean name.
-
setMessageHandlerMethodFactory
public void setMessageHandlerMethodFactory(org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory messageHandlerMethodFactory)
Set theMessageHandlerMethodFactoryto use to configure the message listener responsible to serve an endpoint detected by this processor.By default,
DefaultMessageHandlerMethodFactoryis used and it can be configured further to support additional method arguments or to customize conversion and validation support. SeeDefaultMessageHandlerMethodFactoryJavadoc for more details.- Parameters:
messageHandlerMethodFactory- theMessageHandlerMethodFactoryinstance.
-
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:
setApplicationContextin interfaceorg.springframework.context.ApplicationContextAware- Throws:
org.springframework.beans.BeansException
-
setBeanFactory
public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
Making aBeanFactoryavailable is optional; if not set,KafkaListenerConfigurerbeans won't get autodetected and anendpoint registryhas to be explicitly configured.- Parameters:
beanFactory- theBeanFactoryto 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
-
afterPropertiesSet
public void afterPropertiesSet() throws java.lang.Exception- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
java.lang.Exception
-
afterSingletonsInstantiated
public void afterSingletonsInstantiated()
- Specified by:
afterSingletonsInstantiatedin interfaceorg.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:
postProcessBeforeInitializationin interfaceorg.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:
postProcessAfterInitializationin interfaceorg.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.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)
-
-