Spring Cloud Stream:JSON 数组无法转换为 POJO 列表

Spring Cloud Stream: JSON array cannot be cast to POJO list

我正在对 Spring Cloud Stream 的 内容类型自动转换 进行一些测试。

spring-cloud-stream Guide 所示。 GreetingMessage({"greeting":"Hello, world"})的json格式在[=16=中消费时会自动转换为POJOGreetingMessage对象].测试成功。

但是,当我将输出更改为List<GreetingMessage > [{"greeting":"Hello, world"}, {"greeting":"Good morning"}]时,输入 不会 将其转换为 POJO List<GreetingMessage > 对象,但作为 POJO List<String>.


所以我的问题是:


代码:

@Data
@AllArgsConstructor
public class GreetingMessage {
    private String greeting;
}

@EnableBinding(Source.class)
public class GreetingSource {

    @Bean
    @InboundChannelAdapter(value = Source.OUTPUT, poller = @Poller(fixedDelay = "1000", maxMessagesPerPoll = "1"))
    public MessageSource<List<GreetingMessage>> greeting() {
        return new MessageSource<List<GreetingMessage>>() {
            public Message<List<GreetingMessage>> receive() {
                return new GenericMessage(Arrays.asList(new GreetingMessage("hello"), new GreetingMessage("hello2")));
            }
        };
    }
}

@EnableBinding(Sink.class)
public class GreetingSink {
    @StreamListener(Sink.INPUT)
    public void receive(Message<List<GreetingMessage>> msg) {
        // handle GreetingMessage
        System.out.println(msg);
    }
}

这是消息转换过程的限制,其中不考虑参数化类型(仅考虑原始 List 类型)。如果您认为需要支持,请提出问题 GitHub。