我有一个使用spring-kafka的Spring启动项目。在这个项目中,我构建了一些事件驱动的组件来包装spring-kafka bean(即KafkaTemplate和ConcurrentKafkaListenerContainer)。我想让这个项目成为一组可重用的库,包含一组Spring启动应用程序。但是,当我从Spring启动应用程序向此库添加依赖项时,我在应用启动时收到错误:
ConsumerFactory<A, B>
由于我需要自动装配ConsumerFactory<Object, Object>
(而不是escapedCharacters
)我在配置类中创建了这个bean,该类使用@EnableConfigurationProperties(KafkaProperties.class)注释
我只需要重用org.springframework.boot.autoconfigure.kafka.KafkaProperties,而不在KafkaAutoConfiguration和KafkaAnnotationDrivenConfiguration中自动配置其他bean。
我试图在我的库中放置 @EnableAutoConfiguration(exclude = KafkaAutoConfiguration.class),但这并不妨碍依赖于我的库的应用程序触发spring-kafka autoconfiguration排除在图书馆。
如何指定我不希望在我的库中自动配置某些bean(KafkaAutoConfiguration和KafkaAnnotationDrivenConfiguration),但也可以在依赖于此库的任何应用中?
答案 0 :(得分:2)
我相信依赖于库的应用程序本身必须从自动配置中排除这些类。
答案 1 :(得分:0)
在servlet初始值设定项中输入相同的内容对我有用。
@SpringBootApplication(exclude = KafkaAutoConfiguration.class)
public class Application extends SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application .class);
}
public static void main(String[] args) {
SpringApplication.run(GncApplication.class, args);
}
}