學習ssm框架(spring+springMVC+myBatis)有一段時間了,下面談談自己的看法
Spring框架(百科)
Spring是一個輕量級的容器框架,它的核心功能是控制反轉(IoC)和面向切面(AOP);它就是一個用來生產bean的工廠
輕量級框架優點是減小開發的復雜度,缺點是處理能力弱(如事務功能弱、不具備分布式處理能力,struts也是輕量級框架)
控制反轉IoC–一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象,它的作用在於解耦和
切面編程AOP–Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的–完成業務邏輯–僅此而已。
在ssm框架中spring框架起銜接springMVC和myBatis框架作用,因為業務層會調用持久層的數據庫的數據處理,web層會調用業務層的業務處理。
springMVC框架(百科)
springMVC主要通過前端控制器對網頁請求進行處理,它的注解十分方便,簡潔化了開發和測試。
Spring MVC主要由DispatcherServlet、處理器映射、處理器(控制器)、視圖解析器、視圖組成。他的兩個核心是:
處理器映射HandlerMapping:選擇使用哪個控制器來處理請求 ;
視圖解析器ViewResolver:選擇結果應該如何渲染頁面;
工作流程
(1) Http請求:客戶端請求提交到DispatcherServlet。
(2) 尋找處理器:由DispatcherServlet控制器查詢一個或多個HandlerMapping,找到處理請求的Controller。
(3)調用業務處理和返回結果:Controller調用業務邏輯處理后,返回ModelAndView。
(4)(5)處理視圖映射並返回模型: DispatcherServlet查詢一個或多個ViewResoler視圖解析器,找到ModelAndView指定的視圖。
(6) Http響應:視圖負責將結果顯示到客戶端
myBatis框架(百科)
myBatis是一個半自動化的持久層框架,使用者可以直接面對sql語句對數據庫操作,很方便(反面這也是它的缺點,要寫大量的數據庫操作語句);MyBatis使用簡單的XML或注解用於配置和原始映射,將接口和Java的POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。
myBatis強大之處在於它的動態sql語句,不用去管數據庫語句的逗號那些繁瑣的東西,很方便。
myBatis的事務交給Spring管理,Spring的AOP切面編程與myBatis事務的配合十分完美,你去使用它會有種它們注定是一對的感受。
myBatis的一級緩存是sqlSession級別,默認開啟;二級緩存是application級別,默認關閉。緩存針對於查找操作,對於增刪改操作,緩存會被刷新。詳細參考
三個框架整合流程
在ssm框架中spring框架起銜接springMVC和myBatis框架作用,因為業務層會調用持久層的數據庫的數據處理,web層會調用業務層的業務處理。
因此服務器啟動時,會首先加載spring容器spring配置文件中會加載myBatis對數據庫的操作以及事務操作,然后加載SpringMVC容器。
下面具體從配置文件來看
首先是服務器的配置文件web.xml
一、加載spring的配置文件application.xml
進入application.xml文件中
這里首先會掃描所有的bean加載到Spring容器中,然后加載myBatis持久層以及事務,沒有掃描Controller層是因為ssm框架中的SpringMVC容器會單獨掃描Controller層,這樣分開掃描,分工明確,條例清晰,后面會有文章單獨談掃描路徑
myBatis持久層的加載
事務加載
到此Spring容器已經加載完成,可以看到Spring框架和myBatis框架的融合,下面說SpringMVC框架
二、web.xml文件加載spring完成后,繼續加載SpringMVC
進入springMvc.xml文件
這里掃描只會掃描Controller層,因為SpringMVC容器是Spring容器的子容器,它可以使用Spring容器加載的東西。
由於我的配置是攔截所有請求,這里對靜態資源的加載也要配置
視圖解析器的配置
到這里整合算是結束,上面可能存在疏漏之處,請提出。
對於三個框架的使用,關鍵在於配置,大量的代碼被配置優化了,Spring框架對springMvc和myBatis框架的融合,簡化了整個業務流程,代碼十分簡潔。輕量級,速度快,效率高,這九個字形容SSM框架最好不過噢