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

时间:2016-11-30 16:31:07

标签: java spring-cloud-stream spring-messaging

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

正如spring-cloud-stream Guide所示。当GreetingMessage消耗时,{"greeting":"Hello, world"}GreetingMessage)的json格式将自动转换为 POJO @StreamListener对象。这次测试成功。

但是,当我将输出更改为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);
    }
}

1 个答案:

答案 0 :(得分:1)

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