服务类(图层)中的方法是否可以调用同一服务中的另一个方法?

时间:2018-06-09 04:30:29

标签: java service soa

寻求有关这是否违反SOA中的服务层设计原则的建议。我的设计很简单 - Endpoint -> Service -> Repository。 Service层将DTO返回给端点,该端点被转换为响应对象。

目前我的端点和服务层合同如下

端点

public interface Order {

     OrderInfoResponse getOrderInfo(String orderId);

     OrderStatusResponse isOrderComplete(String orderId);
}

服务

public interface OrderService {

    OrderDTO getOrder(String orderId);

    boolean getOrderStatus(String orderId);
}

现在,在我的实现中,getOrderStatus Service方法调用getOrder方法来查询顺序,然后返回检索到的Order实体的布尔字段。

到目前为止我的推理:

  1. 为什么我只有一个端点来检索状态?
    • 我要求我的申请只公开订单的状态。我想,让端点返回"轻量级" object- OrderStatusResponse,它本质上只包含一个布尔标志,将是一个更简单的API,更轻的有线负载,更容易让消费者理解和解析等。
  2. 单独的服务方法会将我的端点与现有的getOrderInfo服务方法及其预期的操作分离。如果有更多要求,专用服务方法将允许更大的灵活性
  3. 反驳上述观点,我的端点无法使用现有的getOrderInfo服务方法,检索完整的Order DTO并提取必要的布尔字段并构建响应?在这种情况下,根本没有新的服务方法。
  4. 问题:

    1. [主要问题]让一个服务方法调用另一个服务方法是否可以接受 服务类?
    2. 如果没有,那么这样做的正确方法是什么?
    3. 我的推理有缺陷吗?
    4. 感谢您的阅读。

1 个答案:

答案 0 :(得分:0)

从您的服务中调用您自己的API是没有问题的 - 如果它对“公共”开放,则它可供您内部使用。关键在于您的服务,了解内部服务结构,您可以采取捷径。例如,在您的情况下,为什么在您只需要订单状态时检索完整订单