【问题标题】:SpringBoot Upgrade 2.3.7 to 2.5.4 - Issue with KafkaStreamsAutoConfigurationSpring Boot 升级 2.3.7 到 2.5.4 - Kafka Streams AutoConfiguration 问题
【发布时间】:2021-10-27 03:21:09
【问题描述】:

这些是 pom.xml 中的依赖项。 spring-cloud.version is 2020.0.3

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>org.apache.kafka</groupId>
      <artifactId>kafka-streams</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-function-context</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-sleuth-zipkin</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-stream</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-stream-binder-kafka</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-stream-binder-kafka-streams</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.kafka</groupId>
      <artifactId>spring-kafka</artifactId>
    </dependency>
    <dependency>
      <groupId>io.zipkin.brave</groupId>
      <artifactId>brave-instrumentation-spring-web</artifactId>
      <version>5.6.10</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-function-kotlin</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
...Rest omitted

应用程序无法启动

Description:

Parameter 0 of method kafkaStreamsFunctionProcessorInvoker in org.springframework.cloud.stream.binder.kafka.streams.function.KafkaStreamsFunctionAutoConfiguration required a bean named '&getRestTemplate_registration' that could not be found.


Action:

Consider defining a bean named '&getRestTemplate_registration' in your configuration.

这是奇怪的部分 - 我确实定义了一个 Bean

    /**
     * Functional bean which gets / builds the RestTemplate for the given request
     * @return the rest template or null if no configuration exists
     */
    @Bean
    fun getRestTemplate(): (RestCallRequest) -> RestTemplate? {
        return { restCallRequest -> getRestTemplateNameForUrl(restCallRequest.url)?.let(::getOrBuildRestTemplate) }
    }

它正在自动装配,如下所示在另一个类中

    @Autowired
    private lateinit var getRestTemplate: (RestCallRequest) -> RestTemplate?

在 SpringBoot 2.3.7 中有效,但在更新后现在不可用。谁能给我一个提示如何解决这个问题。 为什么 Bean 的前缀是 &amp;,后缀是 _registration?我没有在整个应用程序中使用该术语。

我绝望地按照建议定义了一个 Bean。结果是:

Consider defining a bean named '&getRestTemplate_registration_registration' in your configuration.

【问题讨论】:

  • 您在项目中使用的是 spring-boot-starter-validation 吗?我在升级时遇到了这个问题,因为它没有包含在任何人的网络中,这使得所有项目都无法正确编译。与 Kotlin 相关的排除项似乎很可疑。

标签: spring-boot kotlin spring-cloud spring-cloud-function


【解决方案1】:

经过大量调试,我们能够找到的唯一解决方法是:

@SpringBootApplication(exclude =[KotlinLambdaToFunctionAutoConfiguration::class])

包含重现问题的小示例项目的错误报告写为:https://github.com/spring-cloud/spring-cloud-function/issues/735

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-30
    • 2023-04-01
    • 2017-01-10
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    相关资源
    最近更新 更多