最近工做中開發的項目使用了Spring-springMVC-Mybatis框架進行開發,今天來總結寫這段時間對SSM框架的理解。在對SSM框架整合前,先對框架的每層的做用以及它們之間的關係作一個簡單的介紹。java
表現層(springMVC):Controller層(Handler層)web
負責具體的業務模塊流程的控制spring
Controller層經過要調用Service層的接口來控制業務流程,控制的數據庫
配置也在Spring配置文件裏面。apache
業務層(Spring):Service層編程
Service層:負責業務模塊的邏輯應用設計。服務器
首先設計其接口,而後再實現他的實現類。架構
經過對Spring配置文件中配置其實現的關聯,完成此步工做,咱們app
就能夠經過調用Service的接口來進行業務處理。框架
最後經過調用DAO層已定義的接口,去實現Service具體的 實現類。
持久層(Mybatis):Dao層(Mapper層)
Dao層:負責與數據庫進行交互設計,用來處理數據的持久化工做。
DAO層的設計首先是設計DAO的接口,
而後在Spring的配置文件中定義此接口的實現類,就可在其餘模塊中
調用此接口來進行數據業務的處理,而不用關心接口的具體實現類是
哪一個類,這裏用到的就是反射機制, DAO層的數據源配置,以及有
關數據庫鏈接的參數都在Spring的配置文件中進行配置。
視圖層:View層
負責前臺jsp頁面的展現。
此層須要與Controller層結合起來開發。
各層間的聯繫:
原本Controller層與View層是能夠放在.jsp文件裏一塊兒開發的,可是爲了下降代碼的複雜度,提升其可維護性,將其分爲了這兩層,這也體現了MVC框架的特性,即結構清晰,耦合度低。
Service層是創建在DAO層之上的,創建了DAO層後才能夠創建Service層,而Service層又是在Controller層之下的,於是Service層應該既調用DAO層的接口,又要提供接口給Controller層的類來進行調用,它恰好處於一箇中間層的位置。每一個模型都有一個Service接口,每一個接口分別封裝各自的業務處理方法。
2.一、Spring
Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著做Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是爲了解決企業應用開發的複雜性而建立的。Spring使用基本的JavaBean來完成之前只可能由EJB完成的事情。然而,Spring的用途不只限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用均可以從Spring中受益。 簡單來講,Spring是一個輕量級的控制反轉(IoC)和麪向切面(AOP)的容器框架。
若是想學習Java工程化、高性能及分佈式、深刻淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友能夠加個人Java進階羣:582505643,羣裏有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給你們。
2.二、SpringMVC
Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裏面。Spring MVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定製。
2.三、MyBatis
MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,而且更名爲MyBatis 。MyBatis是一個基於Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了幾乎全部的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始映射,將接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。
Spring:用到註解和自動裝配,就是Spring的兩個精髓IOC(反向控制)和 AOP(面向切面編程)。
SpringMVC:用到了MVC模型,將流程控制代碼放到Controller層處理,將業務邏輯代碼放到Service層處理。
Mybatis:用到了與數據庫打交道的層面,dao(mapper)層,放在全部的邏輯以後,處理與數據庫的CRUD相關的操做。
好比你開發項目的時候,須要完成一個功能模塊:
先寫實體類entity,定義對象的屬性,(能夠參照數據庫中表的字段來設置,數據庫的設計應該在全部編碼開始以前)。
寫Mapper.xml(Mybatis),其中定義你的功能,對應要對數據庫進行的那些操做,好比 insert、selectAll、selectByKey、delete、update等。
寫Mapper.java/Dao.java,將Mapper.xml中的操做按照id映射成Java函數。實際上就是Dao接口,兩者選一便可。
寫Service.java,爲控制層提供服務,接受控制層的參數,完成相應的功能,並返回給控制層。
寫Controller.java,鏈接頁面請求和服務層,獲取頁面請求的參數,經過自動裝配,映射不一樣的URL到相應的處理函數,並獲取參數,對參數進行處理,以後傳給服務層。
寫JSP頁面調用,請求哪些參數,須要獲取什麼數據。
好了,到這裏就結束了,基本上,SSM框架下web項目運行流程,各個層次之間的做用,代碼定義和實現的東西基本上都說明了