SpringMVC 三層架構#
Java SpringMVC 的工程結構一般來說分為三層,自下而上是 Modle 層(模型,數據訪問層)、Cotroller 層(控制,邏輯控制層)、View 層(視圖,頁面顯示層),其中 Modle 層分為兩層:dao 層、service 層,MVC 架構分層的主要作用是解耦。採用分層架構的好處,普遍接受的是系統分層有利於系統的維護,系統的擴展。就是增強系統的可維護性和可擴展性。
對於 Spring 這樣的框架,(View\Web)表示層調用控制層(Controller),控制層調用業務層(Service),業務層調用數據訪問層(Dao)。
service 層:業務層,用來實現業務邏輯。能調用 dao 層或者 service 層,返回數據對象 DO 或者業務對象 BO,BO 通常由 DO 轉化、整合而來,可以包含多個 DO 的屬性,也可以是只包含一個 DO 的部分屬性。通常為了簡便,如果無需轉化,service 也可以直接返回 DO。外部調用(HTTP、RPC)方法也在這一層,對於外部調用來說,service 一般會將外部調用返回的 DTO 轉化為 BO。是專注業務邏輯,對於其中需要的數據庫操作,都通過 Dao 去實現。主要去負責一些業務處理,比如取得連接、關閉數據庫連接、事務回滾,一些複雜的邏輯業務處理就放到 service 層。
DAO 層:負責訪問數據庫進行數據的操作,取得結果集,之後將結果集中的數據取出封裝到 VO 類對象之後返回給 service 層。數據層,直接進行數據庫的讀寫操作,返回數據對象 DO,DO 與數據庫表一一對應。Dao 的作用是封裝對數據庫的訪問:增刪改查,不涉及業務邏輯,只是達到按某個條件獲得指定數據的要求。
Cotroller 層:叫做控制層,主要的功能是處理用戶發送的請求。主要處理外部請求。調用 service 層,將 service 層返回的 BO/DO 轉化為 DTO/VO 並封裝成統一返回對象返回給調用方。如果返回數據用於前端模板渲染則返回 VO,否則一般返回 DTO。不論是 DTO 還是 VO,一般都會對 BO/DO 中的數據進行一些轉化和整合。
View 層:叫做顯示層,主要是負責現實數據。
在實際開發中 dao 層要先定義出自己的操作標準即標準接口,就是為了解耦合。