在 Spring Kafka 中,我是否需要在我的应用程序中添加 @EnableKafka 注解?

In Spring Kafka, do I need to add the @EnableKafka annotation to my application?

我看到有些人将 @EnableKafka 添加到他们的 spring 启动应用程序中,我想知道为什么。我有一个工作的 spring boot kafka 生产者和消费者,我没有使用 @EnableKafka。那么,为什么人们需要明确添加它?

谢谢。

Spring 如果在 class 路径上检测到 spring-kafka,则引导自动配置 @EnableKafka

因此启动应用程序不再需要它;仅当您的 Spring 应用不是引导应用时才需要它。

这是因为 Spring 引导通过 KafkaAutoConfiguration class (javadoc) 为 Kafka 提供了自动配置。当您使用 @EnableAutoConfiguration@SpringBootApplication 时,Spring boot 会自动为您配置 Kafka。

您可以通过提供 @SpringBootApplication(exclude={KafkaAutoConfiguration.class}) 排除自动配置来测试,并且 Spring 启动不会自动为您配置 Kafka。

如果您不使用 Spring 引导,则必须使用 @EnableKafka 为您的 Spring 应用程序配置 Kafka。