我应该在 Lagom 的什么地方定义自定义(反)序列化器?

Where should I define custom (de)serializers in Lagom?

我开始在 Java 中使用 Lagom,并且需要编写自定义(反)序列化程序。我通读了文档并了解了 NegotiatedSerializer、MessageSerializer、SerializerFactory 等的作用。我不明白的是在哪个包中定义 class 是规范的。我查看了 Chirper 示例,发现在各种 *API 模块中的 *Service 接口旁边通常有具体的模型定义,但没有自定义序列化程序的示例。感谢您的帮助!

消息序列化程序(请求主体、响应主体和发布到主题的消息)应该是服务 api 模块的一部分。服务的客户端和服务实现本身都需要使用序列化程序。这使它们成为服务接口或 API.

的一部分

持久性序列化程序(命令和回复、持久性事件、实体状态)应在每个服务的 impl 模块中定义。它们是内部实现的细节,不应该暴露给客户。

除了这些广泛的准则之外,组织包结构的方式完全取决于您。一些项目对 API 使用一个包,而对实现使用另一个包。其他人可能会将每个划分为 sub-packages,但由于服务通常应该保持非常小且集中,这可能有点过分了。您应该以对您的项目和组织有意义的方式安排包。