котлин 1.2.40
пружинная интеграция 5.0.4
(работал с 1.2.30 + 4. * пружинная интеграция)
попробуйте создать конфигурацию потока интеграции (несколькими способами):
...
.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 - все работает.
Одна вещь состоит в том, что лямбды Котлина не являются синтетическим классом, в то время как Java,
поэтому Spring Integration не видит их как лямбды.
С другой стороны, он работал раньше, и некоторые вещи DSL, такие как transform
, а некоторые другие все еще работают с лямбдами Котлина.
Этого можно избежать с помощью явного имени метода:
.route ({ m : MyClass -> m.key },"apply")
Хотя это очень некрасиво.
Кто-нибудь знал решение, кроме «применить» или перенести @Configuration с Sp Int на Java?
РАБОЧИЙ ПРИМЕР НА GITHUB https://github.com/comdiv/kotlin-spring-issue/blob/master/src/test/kotlin/comdiv/TryCreateIntegrationFlowTest.kt