Spring Boot分层架构中外部API调用放在哪里

rob*_*anz 5 java rest spring-boot

我有一个 SpringBoot 应用程序,有四层;域、控制器、服务和存储库。

我正在使用控制器为客户端创建端点,但在应用程序中,我想使用 REST 对我不想直接向客户端公开的外部 API 进行一些外部 API 调用。

您将在结构中的哪个位置实现此类外部调用?我正在与一位朋友讨论,创建某种适配器包并在服务层中调用它可能是个好主意,但我不太确定。

Has*_*ral 4

我认为在大多数情况下,这将在您的服务层中,但同样,这高度依赖于案例,如果不是基于意见的话。

根据定义,服务层应该为您服务。这意味着当请求到达应用程序的控制器层(处理与外界的通信)时,控制器层只应该传输数据(以正确的格式,例如序列化、反序列化)并将工作委托给服务层(显然反之亦然,将结果传递给外界)。

存储库层完全超出了外部其余调用的范围。领域层应该对数据进行建模,存储库通常用于抽象数据的存储。

现在关于服务层,我认为这就是您的应用程序逻辑所在的位置。您可以在此处选择存储数据(例如,转到存储库)或转到外部休息服务。

然而,需要强调的是情况的案例依赖性:Elasticsearch 使用休息接口,可以被视为数据存储。那么我们把对它的调用放在哪里呢?Spring 框架选择在存储库类中表示这些调用,我也是如此。