我正在编写一个使用 RestController 来公开一个资源的 Spring Boot 应用程序。唯一的资源 MainResource 是这样的:
String id;
String title;
List<String> tags;
ComplexGraphObject gObject;
为了完成这项工作,我在必要时为 MainResource 和 gObject 及其字段编写了 DTO。我用 Jackson 注释了 DTO,并编写了返回域模型的 DTO-Mappers。Spring 正确地将对 DTO 的请求序列化,并且应用程序服务为域对象调用 DTO-Mappers。
我现在意识到 gObject 应该是它自己的库,因为我们想将它用于客户端和服务器应用程序。
我的目标是:
- 该库应采用 json/xml 中的序列化 gObjects 并返回域对象。
- 该库应采用域 gObjects 并返回序列化的 json/xml
- 使已经使用 Jackson 的应用程序尽可能与 Spring Boot 等库无缝协作
- 为其他可能使用诸如 gson 之类的应用程序提供方便的方法
从我读到的自定义杰克逊 de/serializer 是要走的路。但是在自定义序列化程序、ObjectMapper、MixIns 等之间,我不知道该怎么做。
编辑:我认为 mixins 的目的有点像我的 DTO 正在做的事情,而 DTO-Mapper 有点像自定义 de/serializer 应该做的事情。有没有办法混合两者?
编辑:我忘记了重要的部分。DTO-Mapper 从 DTO 生成域对象以及表示图中每个节点所需关系的矩阵,以便可以相应地连接它们。所以我想我需要在自定义序列化程序中这样做?