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

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

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

  1. public class Fog {
  2. private String value;
  3. private Fog() {
  4. }
  5. public Fog(final String value) {
  6. this.value = value;
  7. }
  8. public String getValue() {
  9. return this.value;
  10. }
  11. }

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

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

而不是像:

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

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

暂无答案!

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

相关问题