2016-09-26 53 views
0

(但據我所知,它是介體黑白控制器和DAO層。)或者我們可以直接在控制器中採用道依賴,這是不錯的做法! ???如I所示春季mvc需要什麼服務層?什麼樣的邏輯推薦?

@Controller 
public class HomeController { 

    // @Autowired 
    // private UserServiceImpl userService; 
    @Autowired 
    private UserDAOImpl userDAOService; 

    @RequestMapping(value = "login", method = RequestMethod.GET) 
public String login(..){ 
    // String res = userService.someOperation(); 
     String res = userDAOService.someOperation(); 
     ............ 
     } 
    } 
+0

你想通過這個http://programmers.stackexchange.com/questions/162399/how-essential-is-it-to-make-a-service-layer – mhasan

+0

也許這個對你有好處。 http://stackoverflow.com/questions/9633498/do-i-really-need-a-service-layer。 –

回答

1

通常將DAO的直接進入控制器是一個壞主意,除非控制器是非常簡單的(如在低於10線中的一個方法 - 說不定一個單元測試)。這並不一定意味着你絕對必須將這些服務分割成單獨的可部署服務。對於許多較小的項目,「服務」是直接與應用程序其餘部分打包的接口。

當一個服務層將幫助是當你有一個更大的應用程序,特別是如果這些服務都執行不同的角色。例如,如果您的業務是製造業務,並且您的庫存服務收到大量流量,則可以將其分解爲可部署的服務,並將您的用戶管理和市場營銷納入單獨的可部署服務中。將服務分離出來的好處是可以獨立擴展繁忙的服務。例如,如果您在AWS上運行,則自行擴展庫存服務更有意義,而不是僅僅因爲一塊塊被調用而擴展整個應用程序。

0

一般來說是一個糟糕的初步實踐混合, 控制器和道或控制器和服務。

使用DAO的主要原因是從業務操作/邏輯中分離數據庫功能。 還使用DAO和服務項目使得鬆耦合即(較少依賴於彼此)

並儘可能業務邏輯在這裏來講是從ATM

取款的例子
  1. 首先您插入ATM卡。
  2. 然後你輸入你的金額。
  3. 然後你輸入你的密碼。
  4. 然後最後處理您的交易。

這種流動是你的業務邏輯。

1

一個很好的理由爲什麼我們需要服務層是鬆耦合:

比方說,你在你的控制器類100層的API,併爲他們提供服務20種方法。

現在,如果你直接調用控制器道的方法,並在以後的時間點,你想擁有這些服務控制器的不同道的方法。

你必須改變你所有的100個控制器嗎?

所以如果有20個服務方法調用這些20道方法。

現在,如果你想改變這些服務100個控制器的DAO方法,你可以改變的服務方法(即20種方法),以指向新的DOA方法,而不是改變你的100控制器類。

這就是你如何實現鬆耦合,是一種更好的編程方式。 希望這可以幫助你:)