2013-09-05 135 views
0

我是網絡服務和Spring的新手。我有這樣一個Web服務方法:在web方法,服務層或DAO層中創建服務響應?

@WebMethod(operationName = "docSearch") 
    public ServiceResponse docSearch(@WebParam(name = "docNum") String docNum) { 
     //TODO lots of TODOs here: 
     docService = getDocService(); 
     ServiceResponse serviceResponse = docService.docSearchService(docNum); 
     return serviceResponse; 
    } 

使用這個服務:

@Transactional 
    public ServiceResponse docSearchService(ServiceRequest serviceRequest, String docNum) { 
     //TODO lots of TODOs here: 
     ServiceResponse serviceResponse = new ServiceResponse(); 
     serviceResponse = docDao.docSearchDAO(serviceRequest, docNum); 
     return serviceResponse; 
    } 

和相應的DAO是:

public ServiceResponse docSearchDAO(ServiceRequest serviceRequest, String docNum) {    

     Session session = sessionFactory.getCurrentSession(); 
     List<doc> temp = session.createCriteria(Doc.class) 
       .add(Restrictions.eq("id", docNum)) 
       .list(); 

     if (temp != null && temp.size() > 0) { 

      serviceResponse.setDescription("Service response successfully implemented);   
      return serviceResponse; 
     } else { 
      serviceResponse.setDescription("Service response was not successfully implemented); 
      return serviceResponse; 
     } 

     } 

我不知道什麼是填充的最好方式在Web方法的這個ServiceResponse對象中,在服務層還是在DAO層?

回答

2

我想說你的Web方法。 Web服務應該是調用服務層的接口。它應該將傳入的請求轉換爲服務層可以理解的內容,並將結果轉換爲Web服務可以發送的內容。

的服務,一般來說,你的應用程序的可重複使用的部分,並且可以或許做批量插入您的Web服務和Web應用程序(帶控制器)之間重複使用或。基本上所有調用服務(包含業務邏輯)都是服務的接口層。

控制器提供對通常通過服務接口定義的應用程序行爲的訪問。控制器解釋用戶輸入並將其轉換爲由視圖呈現給用戶的模型。 Spring以非常抽象的方式實現了一個控制器,使您能夠創建各種各樣的控制器。 Reference Guide

對我來說,這適用於與服務層接口的應用程序的每個部分。它基本上從/到服務層理解的東西。這裏是a blog鏈接到一些有趣的信息(在更廣泛的架構層面上)。

鏈接:

  1. Spring Reference Guide
  2. Clean Architecture
+0

非常感謝明確說明和鏈接。我一定會看看你的建議! – lamostreta