microserviceapi模块中单值java对象的json序列化与反序列化

z9ju0rcb  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(236)

我遇到了一个微妙的“最佳实践”困境。但首先,背景:
我在几个基于rest-springboot的微服务上工作,在这些微服务中,每个服务都将提取api模块。这背后的想法是:
每当你需要两个微服务相互通信时,只需添加api模块依赖项,瞧。您可以使用即插即用体验进行序列化/反序列化。
这对于保持这些服务之间通信的简单性和一致性非常有用。
但是,对于新创建的微服务,在其api中有一个具有单个字符串值的类,如:

public class Fog {
    private String value;

    private Fog() {
    }

    public Fog(final String value) {
        this.value = value;
    }

    public String getValue() {
        return this.value;
    }
}

问题是现在这个类将被序列化为

<{value=fa2a81f4-8412-41f9-8656-c94487f224ec}>

而不是像:

"fa2a81f4-8412-41f9-8656-c94487f224ec"

不,这个类不能仅仅被其父对象中的字符串替换,原因有几个。
对于这个问题,我知道有三种解决方案,但似乎没有一种是100%让我满意的:
像这样离开,创建序列化程序/反序列化程序并将其注册到服务中,该服务正在导入该模型->丢失即插即用体验。
创建一个mixin并在objectmapper中注册它-同样的故事,没有更多的即插即用体验。
添加@jsonvalue注解-除了它打破了我的规则“api模型类应该是vanilla java之外,我现在还强迫某人包含用于序列化/反序列化的fasterxml jackson库。
有没有第四个选项可以让我保持即插即用的体验,并使我的api模块从序列化/反序列化库中抽象出来?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题