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