Ho can be replaced a Java configuration like this
@Configuration
@EnableKafka
public class KafkaConfig {
}
With a full XML configuration?
Especially how can be methods (or classes) annotated with
@KafkaListener
public void poll(String msg){}
injected into Spring Kafka context as listeners?
@EnableKafka
adds 2 beans to the application context:
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
if (!registry.containsBeanDefinition(
KafkaListenerConfigUtils.KAFKA_LISTENER_ANNOTATION_PROCESSOR_BEAN_NAME)) {
registry.registerBeanDefinition(KafkaListenerConfigUtils.KAFKA_LISTENER_ANNOTATION_PROCESSOR_BEAN_NAME,
new RootBeanDefinition(KafkaListenerAnnotationBeanPostProcessor.class));
}
if (!registry.containsBeanDefinition(KafkaListenerConfigUtils.KAFKA_LISTENER_ENDPOINT_REGISTRY_BEAN_NAME)) {
registry.registerBeanDefinition(KafkaListenerConfigUtils.KAFKA_LISTENER_ENDPOINT_REGISTRY_BEAN_NAME,
new RootBeanDefinition(KafkaListenerEndpointRegistry.class));
}
}
So just add those as <bean/>
s with those names.
"org.springframework.kafka.config.internalKafkaListenerAnnotationProcessor"
"org.springframework.kafka.config.internalKafkaListenerEndpointRegistry"