是否在 Spring 中包装后端系统客户端

To wrap back-end system clients or not in Spring

我有一个带有 Spring 的应用程序,我需要调用许多不同类型的后端系统(遗留大型机、ESB、RESTful...)。如果我们采取例如REST,我可以实现一个 RESTful 客户端,例如休息模板。我可以 A) 让开发人员直接使用 RestTemplate 客户端,他们向其传递服务 url 和数据对象。或者我可以 B) 将 RestTemplate 包装在我们自己的后端特定客户端中,并提供开发人员可以使用的显式方法。这些方法本身当然会使用 RestTemplate 并进行显式后端调用。

A) 的优点是后端系统的更改不需要更改客户端。缺点是我们不隐藏架构。 B) 对开发者来说更​​清晰也更容易 "manage",但是后端系统的变化要求我们更新所有想要使用新后端功能的应用程序。更糟糕的是,后端系统功能的更改可能需要更新所有服务。

不过,我个人还是倾向于选项 B),因为它为开发人员提供了业务逻辑和架构服务的完美分离。

我不明白您是如何得出这样的结论的:如果客户想要使用新功能或者 API 由于更改而中断,则他们不需要更新(选项 A)。
我觉得B选项更好。但我会使用 HTTP 客户端 Feign 创建请求模板,然后发布接口。这样您甚至不必包装 RestTemplate 并手动实现每个请求。