我对Kafka完全陌生,对此感到非常困惑:
Https://docs.spring.io/spring-kafka/reference/html/#with-java-configuration-no-spring-boot
我甚至不明白那是什么意思。“没有Spring Boot”是什么意思,因为那个例子肯定是用Spring Boot的。我太困惑了……
编辑
如果我使用SpringBoot和Spring-Kafka,我是否必须手动创建@Bean ConcurrentKafkaListenerContainerFactory
,如下所示。文档中的大多数设置过滤/配置/等的示例似乎都使用了使用@Bean
的“手动”配置。这是“正常”吗?这些文档让我非常困惑……尤其是这条警告:
Spring for ApacheKafka被设计为在Spring应用程序上下文中使用。例如,如果您在Spring上下文之外自己创建侦听器容器,则除非满足所有…,否则并不是所有函数都能工作容器实现的支持的接口。
2条答案
按热度按时间6g8kf2rb1#
它指的是自动连接的配置,而不是通过HashMap/Properties in-code将每个属性放在配置中。
此外,它不使用
@SpringBootApplication
或SpringApplication.run
,它只使用硬编码的Config
类调用常规的Main方法。j5fpnvbx2#
Spring Boot包含AutoConfiguration的功能
这意味着,当Spring Boot在项目中发现一些它知道的特定
jar
依赖项时,它会自动将它们配置为在基本级别上工作。这在简单的Spring项目中是不存在的,在这个项目中,即使您添加了依赖项,您也必须提供它在您的应用程序中应该如何工作的配置。Kafka的依附者也在这里发生了这种情况。因此,本文档解释了如果没有
spring-boot
和auto-configuration
,您还需要配置哪些内容才能使kafka
在Spring项目中工作。评论中提出的另一个问题是,如果你想要一些复杂的定制配置,而不是在
spring-boot
应用程序中提供的自动配置,会发生什么。作为documented
自动配置试图尽可能智能化,当您定义更多您自己的配置时,它将后退。您始终可以手动排除()任何您永远不想应用的配置(如果您无权访问它们,则使用excludeName())。您也可以通过spring.aufigure.exclude属性排除它们。
因此,如果您希望拥有一些复杂的配置,而这些配置不是由
spring-boot
通过某些其他机制(如spring-boot
特定的应用程序属性)自动提供的,那么您可以使用您的自定义bean
进行自己的配置,然后要么从spring-boot
为该类自动配置,因为Spring在应用程序上下文设置期间进行几次智能检查,要么您必须手动将该类从自动配置中排除。在这种情况下,您可能会以如何在Spring Boot中手动注册复杂配置为例,在非Spring Boot应用程序中记录了如何完成这些操作。多克