更新時(shí)間:2021-06-16 來源:黑馬程序員 瀏覽量:
Java SSM框架即指Spring+SpringMVC+MyBatis的簡稱,框架集由Spring、MyBatis兩個(gè)開源框架整合而成(SpringMVC是Spring中的部分內(nèi)容),常作為數(shù)據(jù)源較簡單的web項(xiàng)目的框架。
相比于之前的SSH(Spring+Struts+Hibernate),SSM更加輕量化和靈活,是目前業(yè)界主流的Java Web開發(fā)框架。
Spring框架是一系列應(yīng)用框架的核心,是整合其他應(yīng)用框架的基礎(chǔ)。也是Spring Boot的基礎(chǔ),Spring框架里面包含了Spring、SpringMVC、SrpingTest等。
Spring的優(yōu)點(diǎn)總結(jié):
1、非侵入式設(shè)計(jì)
Spring是一種非侵入式(non-invasive)框架,它可以使應(yīng)用程序代碼對框架的依賴最小化。
2、 方便解耦、簡化開發(fā)
Spring就是一個(gè)大工廠,可以將所有對象的創(chuàng)建和依賴關(guān)系的維護(hù)工作都交給Spring容器管理,大大的降低了組件之間的耦合性。
3、支持AOP
Spring提供了對AOP的支持,它允許將一些通用任務(wù),如安全、事務(wù)、日志等進(jìn)行集中式處理,從而提高了程序的復(fù)用性。
4、支持聲明式事務(wù)處理
只需要通過配置就可以完成對事務(wù)的管理,而無需手動編程。
5、方便程序的測試
Spring提供了對Junit4的支持,可以通過注解方便的測試Spring程序。
6、方便集成各種優(yōu)秀框架
Spring不排斥各種優(yōu)秀的開源框架,其內(nèi)部提供了對各種優(yōu)秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。
7、降低Java EE API的使用難度
Spring對Java EE開發(fā)中非常難用的一些API(如:JDBC、JavaMail等),都提供了封裝,使這些API應(yīng)用難度大大降低。
SpringMVC是一個(gè)典型教科書式的MVC框架,對于初學(xué)者而言是非常好的。其他優(yōu)點(diǎn)可以概括為:
1、SpringMVC可以支持各種試圖技術(shù),而不僅僅局限于JSP;
2、與Spring框架集成(如IoC容器、AOP等);
3、清晰的角色分配:前端控制器(dispatcherServlet) , 請求到處理器映射(handlerMapping), 處理器適配器(HandlerAdapter), 視圖解析器(ViewResolver);
4、支持各種請求資源的映射策略;
SpringMVC的主要組件有什么?
?。?)前端控制器 DispatcherServlet。接收請求、響應(yīng)結(jié)果,相當(dāng)于轉(zhuǎn)發(fā)器,有了DispatcherServlet 就減少了其它組件之間的耦合度。
(2)處理器映射器HandlerMapping。根據(jù)請求的URL來查找Handler。
?。?)處理器適配器HandlerAdapter。在編寫Handler的時(shí)候要按照HandlerAdapter要求的規(guī)則去編寫,這樣適配器HandlerAdapter才可以正確的去執(zhí)行Handler。
?。?)處理器Handler。編寫Handler時(shí)按照HandlerAdapter的要求去做,這樣適配器才可以去正確執(zhí)行Handler。
?。?)視圖解析器 ViewResolver。進(jìn)行視圖的解析,根據(jù)視圖邏輯名解析成真正的視圖(view)。
?。?)視圖View。View是一個(gè)接口, 它的實(shí)現(xiàn)類支持不同的視圖類型(jsp,freemarker,pdf等等)。
MyBatis是一個(gè)基于Java的持久層框架,所謂的持久層框架就是專門用來將數(shù)據(jù)進(jìn)行持久化的框架,也就是說將數(shù)據(jù)存儲到數(shù)據(jù)庫中的框架。學(xué)習(xí)并掌握Mybatis,首先就要了解Mybatis的核心組件。
Mybatis是半自動ORM映射工具,可以自定義高效的SQL語句提升數(shù)據(jù)庫訪問的效率。Mybatis是半自動的原因是因?yàn)槲覀円贛apper文件中手寫SQL語句,全自動的ORM(如Hibernate)是不需要手寫SQL的。MyBatis可以自定義高效的SQL語句提升數(shù)據(jù)庫訪問的效率;而且MyBatis容易掌握,而Hibernate門檻較高。所以我們用Mybatis代替?zhèn)鹘y(tǒng)的Hibernate。