Аннотация заголовка с расширением. в имени заголовка, например @Header (foo.bar), не сопоставляется

У меня есть простая конечная точка сообщения Spring Integration с подписью:

@Transformer
String handleMessage(@Payload String payload, @Header("nerf") String nerf, @Header("foo.bar") String foobar) {
 //...
} 

Переменная nerf всегда содержит значение заголовка, полученное от Kafka. Переменная foobar всегда имеет значение NULL, несмотря на то, что заголовок с именем foo.bar существует во входящем сообщении.

Это простой поток на основе DSL, исходящий прямо из связующего файла Kafka.

Кажется, что любой параметр с именем, содержащим символ ., не отображается должным образом.

Что я делаю неправильно? Является ли @Header (имя) выражением SpEL?


person Gabriel Bauman    schedule 15.10.2019    source источник
comment
Вы можете попробовать «foo.bar»? В принципе, я подозреваю, что точка интерпретируется средством доступа к свойству как путь к внутреннему свойству. Обычно оборачивают foo.bar в одинарные кавычки   -  person Oleg Zhurakousky    schedule 16.10.2019
comment
К сожалению, цитирование не помогает; смотри мой ответ.   -  person Gary Russell    schedule 16.10.2019


Ответы (1)


Это так устроено; так что вы можете извлечь свойство bar из заголовка с именем foo.

Однако цитирование, как предложил Олег, должно сработать, но не работает; в итоге мы ищем заголовок ''foo' со свойством bar'.

Я открыл выпуск GitHub.

person Gary Russell    schedule 16.10.2019
comment
Похоже, исправление находится в: github.com/spring-projects/spring-integration / pull / 3084 - person Gabriel Bauman; 17.10.2019