我有一个使用 spring-kafka 的 Spring boot 项目。在这个项目中,我构建了一些包装 spring-kafka beans 的事件驱动组件(即 KafkaTemplate 和 ConcurrentKafkaListenerContainer)。我想让这个项目成为跨一组 Spring boot 应用程序的可重用库。但是当我从 Spring Boot 应用程序添加对此库的依赖项时,我在应用程序启动时收到错误:
APPLICATION FAILED TO START
Description:
Parameter 1 of method kafkaListenerContainerFactory in org.springframework.boot.autoconfigure.kafka.KafkaAnnotationDrivenConfiguration required a bean of type 'org.springframework.kafka.core.ConsumerFactory' that could not be found.
- Bean method 'kafkaConsumerFactory' in 'KafkaAutoConfiguration' not loaded because @ConditionalOnMissingBean (types: org.springframework.kafka.core.ConsumerFactory; SearchStrategy: all) found bean 'kafkaConsumerFactory'
Action:
Consider revisiting the conditions above or defining a bean of type 'org.springframework.kafka.core.ConsumerFactory' in your configuration.
因为我需要自动装配ConsumerFactory<A, B>
(而不是一个ConsumerFactory<Object, Object>
)我在用@EnableConfigurationProperties(KafkaProperties.class)注释的配置类中创建这个bean
我需要的只是重用 org.springframework.boot.autoconfigure.kafka.KafkaProperties,而无需在 KafkaAutoConfiguration 和 KafkaAnnotationDrivenConfiguration 中自动配置其他 bean。
我试过把@EnableAutoConfiguration(排除= KafkaAutoConfiguration.class)在我的库中,但这并不能阻止依赖于我的库的应用程序触发库中排除的 spring-kafka 自动配置。
我如何指定我不希望在我的库中自动配置某些 bean(KafkaAutoConfiguration 和 KafkaAnnotationDrivenConfiguration),但是也在依赖此库的任何应用程序中?
我相信依赖于该库的应用程序本身必须从其自动配置中排除这些类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)