gpt4 book ai didi

java - 无法为 Spring Integration 5.0.4 (Spring 5.0.5) 创建 Kotlin 配置

转载 作者:行者123 更新时间:2023-11-30 06:11:57 25 4
gpt4 key购买 nike

Kotlin 1.2.40 Spring 集成5.0.4

(正在使用 1.2.30 + 4.* spring 集成)

尝试创建集成流配置(多种方式):

 ...
.route { m : MyClass -> m.key }
...
.route ( MyClass::class.java, { m : MyClass -> m.key })
...
//even
.route<MyClass,String>( object:java.lang.functions.Function<MyClass,String> ...)

所有这些符号都已编译,但在 Spring Integration 时运行时失败找不到用作路由的方法。

如果用 Java 重写配置 - 一切正常。

有一件事是 Kotlin 的 lambda 不是合成类,而 Java 是,所以 Spring Integration 不会将它们视为 lambda。

另一方面,它以前可以工作,一些 DSL 东西如 transform 和其他一些东西仍然可以与 Kotlin lambda 一起使用。

可以通过显式方法名称来避免:

   .route ({ m : MyClass -> m.key },"apply") 

虽然很丑。

除了“应用”或将 Sp Int 的 @Configuration 转移到 Java 之外,有人知道解决方案吗?

GITHUB 上的工作示例 https://github.com/comdiv/kotlin-spring-issue/blob/master/src/test/kotlin/comdiv/TryCreateIntegrationFlowTest.kt

最佳答案

我认为它可以与 transform() 一起使用,因为 GenericTransformer 只有一种方法可供选择。它以前可以工作,因为 Function 接口(interface)是从 Java 8 复制到 Java 7 代码库,并且仅使用一个 apply() 方法。

到目前为止,我看到您有一个解决方法。作为修复,我建议修改所有基于 Function 的 Java DSL EI 方法,以显式指定 apply 方法,并且不要陷入歧义。

虽然我认为这确实是 Kotlin 的问题,它不尊重 Java...

关于java - 无法为 Spring Integration 5.0.4 (Spring 5.0.5) 创建 Kotlin 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50050876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com