【问题标题】:How to serialize object to json ad hoc in spring如何在春季将对象序列化为 json ad hoc
【发布时间】:2018-07-08 05:52:37
【问题描述】:

我创建了一个 Spring 启动应用程序,它将消息发送到 Kafka 队列(使用 spring 集成 kafka 支持)。我想发送任意 json 序列化的对象。

有没有办法在我的 Spring Boot 应用程序中获取/注入 json-de-/serializer? 或者如何特别反/序列化一个对象?

应用序列化的良好做法是什么?

【问题讨论】:

    标签: json spring-boot apache-kafka


    【解决方案1】:

    Apache Kafka 在其主题中存储和传输字节数组。它附带了许多内置的(反)序列化器,但不包括 JSON 序列化器。幸运的是,Spring Kafka 框架包含一个支持包,其中包含一个 JSON(反)序列化程序,该程序在后台使用 Jackson ObjectMapper。
    你可以像这样添加配置文件

    @Configuration
    public class KafkaConfiguration {
        @Bean
        public ConsumerFactory<String, Operation> consumerFactory(KafkaProperties kafkaProperties) {
            return new DefaultKafkaConsumerFactory<>(kafkaProperties.buildConsumerProperties(), new StringDeserializer(), new JsonDeserializer<>(Operation.class));
        }
    
        @Bean
        public ConcurrentKafkaListenerContainerFactory<String, Operation> kafkaListenerContainerFactory(ConsumerFactory<String, Operation> consumerFactory) {
            ConcurrentKafkaListenerContainerFactory<String, Operation> factory = new ConcurrentKafkaListenerContainerFactory<>();
            factory.setConsumerFactory(consumerFactory);
    
            return factory;
        }
    }
    

    将Operation 替换为您要反序列化的类。

    【讨论】:

    • 我以为我可以使用 kafkas 字符串序列化器并将 json 字符串发送给它?!就我而言,我想发送任意对象。我不想为每个对象配置序列化。对我来说,说 object->json-kafkasstringserializer->kafka(一劳永逸)就足够了
    • 很遗憾,如果不指定 JsonDeserializer 类型,它就无法工作。
    猜你喜欢
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多