丁妍 翟高粵
摘 要:SSM是當(dāng)今流行的Java Web開發(fā)框架,它能解決大部分企業(yè)應(yīng)用開發(fā)的復(fù)雜性問(wèn)題。對(duì)于Java開發(fā)人員來(lái)說(shuō),掌握企業(yè)應(yīng)用框架開發(fā)的基本方法,是進(jìn)行編寫應(yīng)用軟件的必備技能之一。本文主要介紹SSM框架開發(fā)的基本方法及應(yīng)用,并通過(guò)一個(gè)實(shí)例說(shuō)明SSM框架編程的基本使用方法,從而感受SSM編程的便利。
關(guān)鍵詞:SSM框架;MySQL;JDBC
中圖分類號(hào):TP183? ?文獻(xiàn)標(biāo)識(shí)碼:A
一、引言
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個(gè)開源框架整合而成(SpringMVC是Spring中的部分內(nèi)容),常作為數(shù)據(jù)源較簡(jiǎn)單的web項(xiàng)目的框架。Spring就像是整個(gè)項(xiàng)目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數(shù)去調(diào)用實(shí)體類的構(gòu)造方法來(lái)實(shí)例化對(duì)象。也可以稱之為項(xiàng)目中的粘合劑。SpringMVC在項(xiàng)目中攔截用戶請(qǐng)求,它的核心Servlet即DispatcherServlet承擔(dān)中介或是前臺(tái)這樣的職責(zé),將用戶請(qǐng)求通過(guò)HandlerMapping去匹配Controller,Controller就是具體對(duì)應(yīng)請(qǐng)求所執(zhí)行的操作。SpringMVC相當(dāng)于SSH框架中struts。mybatis是對(duì)jdbc的封裝,它讓數(shù)據(jù)庫(kù)底層操作變的透明。mybatis的操作都是圍繞一個(gè)sqlSessionFactory實(shí)例展開的。mybatis通過(guò)配置文件關(guān)聯(lián)到各實(shí)體類的Mapper文件,Mapper文件中配置了每個(gè)類對(duì)數(shù)據(jù)庫(kù)所需進(jìn)行的sql語(yǔ)句映射。在每次與數(shù)據(jù)庫(kù)交互時(shí),通過(guò)sqlSessionFactory拿到一個(gè)sqlSession,再執(zhí)行sql命令。頁(yè)面發(fā)送請(qǐng)求給控制器,控制器調(diào)用業(yè)務(wù)層處理邏輯,邏輯層向持久層發(fā)送請(qǐng)求,持久層與數(shù)據(jù)庫(kù)交互,后將結(jié)果返回給業(yè)務(wù)層,業(yè)務(wù)層將處理邏輯發(fā)送給控制器,控制器再調(diào)用視圖展現(xiàn)數(shù)據(jù)。
二、相關(guān)理論
(一)SpringJDBC
Spring JDBC是對(duì)傳統(tǒng)JDBC訪問(wèn)的簡(jiǎn)單封裝,使用Spring JDBC之后,可以省去一部分以前需要開發(fā)人員編寫的訪問(wèn)數(shù)據(jù)的底層操作,比如注冊(cè)驅(qū)動(dòng)、獲得連接、執(zhí)行查詢等等。Spring JDBC相當(dāng)于一個(gè)簡(jiǎn)單封裝的持久層框架,原始功能比較簡(jiǎn)單,使用起來(lái)也比較簡(jiǎn)單,如果開發(fā)一些小型項(xiàng)目,是可以直接使用的,如果是一些大型項(xiàng)目,由于它并不是真正的orm框架,因此需要自己封裝一些工具,如果有能力封裝的話,那么Spring JDBC用起來(lái)是非常舒服的,性能也很強(qiáng),不比mybatis差。
(二)MySQL
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件之一。
MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)系數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型和大型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。
MySQL和Spring JDBC進(jìn)行配合使用,兼容性好,開發(fā)效率高。
三、SSM框架詳解
(一)MyBatic
MyBatis是當(dāng)前主流的Java持久層框架之一,它是一種ORM框架,它的性能優(yōu)異,具有高度的靈活性、可優(yōu)化性和易于維護(hù)等特點(diǎn),受到了廣大互聯(lián)網(wǎng)企業(yè)的青睞,是目前大型互聯(lián)網(wǎng)項(xiàng)目的首選框架。MyBatis 的主要思想是將程序中的大量 SQL 語(yǔ)句剝離出來(lái),使用 XML 文件或注解的方式實(shí)現(xiàn) SQL 的靈活配置,將 SQL 語(yǔ)句與程序代碼分離,在不修改程序代碼的情況下,直接在配置文件中修改 SQL 語(yǔ)句。
MyBatis框架也被稱為ORM框架。所謂ORM就是一種為了解決面向?qū)ο笈c關(guān)系型數(shù)據(jù)庫(kù)中數(shù)據(jù)類型不匹配的技術(shù),它通過(guò)描述Java對(duì)象與數(shù)據(jù)庫(kù)表之間的映射關(guān)系,自動(dòng)將Java應(yīng)用程序中的對(duì)象持久化到關(guān)系型數(shù)據(jù)庫(kù)的表中。ORM框架的工作原理如圖1所示。
從圖1可以看出,使用ORM框架后,應(yīng)用程序不再直接訪問(wèn)底層數(shù)據(jù)庫(kù),而是以面向?qū)ο蟮姆绞絹?lái)操作持久化對(duì)象,而ORM框架則會(huì)通過(guò)映射關(guān)系將這些面向?qū)ο蟮牟僮鬓D(zhuǎn)換成底層的SQL操作。另外,MyBatis還可以配置動(dòng)態(tài)SQL并優(yōu)化SQL,可以通過(guò)配置決定SQL的映射規(guī)則,對(duì)于一些復(fù)雜的和需要優(yōu)化性能的項(xiàng)目來(lái)說(shuō),使用MyBatis更加合適。
(二)Spring
Spring是一個(gè)開源框架,它由Rod Johnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用基本的JavaBean來(lái)完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。
從簡(jiǎn)單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。
Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個(gè)大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對(duì)象不依賴于Spring的特定類。
Spring通過(guò)一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,一個(gè)對(duì)象依賴的其它對(duì)象會(huì)通過(guò)被動(dòng)的方式傳遞進(jìn)來(lái),而不是這個(gè)對(duì)象自己創(chuàng)建或者查找依賴對(duì)象。而IoC與JNDI相反,它不是對(duì)象從容器中查找依賴,而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴傳遞給它。
Spring提供了面向切面編程的豐富支持,允許通過(guò)分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)(例如審計(jì)(auditing)和事務(wù)(transaction)管理)進(jìn)行內(nèi)聚性的開發(fā)。應(yīng)用對(duì)象只實(shí)現(xiàn)完成業(yè)務(wù)邏輯。它們并不負(fù)責(zé)其它的系統(tǒng)級(jí)關(guān)注點(diǎn),例如日志或事務(wù)支持。
Spring包含并管理應(yīng)用對(duì)象的配置和生命周期,在這個(gè)意義上它是一種容器,可以配置每個(gè)bean如何被創(chuàng)建。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級(jí)的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。
Spring可以將簡(jiǎn)單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一個(gè)XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。
Spring的這些特征使開發(fā)人員能夠編寫更干凈、更可管理、并且更易于測(cè)試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。
(三)Spring MVC
Spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在Spring Web Flow里面。Spring 框架提供了構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構(gòu),從而在使用Spring進(jìn)行WEB開發(fā)時(shí),可以選擇使用Spring的Spring MVC框架或集成其他MVC開發(fā)框架,如Struts1,Struts 2等等。
Spring MVC Framework有這樣一些特點(diǎn):它是基于組件技術(shù)的,全部的應(yīng)用對(duì)象,無(wú)論控制器和視圖,還是業(yè)務(wù)對(duì)象之類的都是java組件。并且和Spring提供的其他基礎(chǔ)結(jié)構(gòu)緊密集成。它不依賴于Servlet API(目標(biāo)雖是如此,但是在實(shí)現(xiàn)的時(shí)候確實(shí)是依賴于Servlet的)可以任意使用各種視圖技術(shù),而不僅僅局限于JSP支持各種請(qǐng)求資源的映射策略,它應(yīng)是易于擴(kuò)展的。
四、結(jié)論
本文對(duì)企業(yè)應(yīng)用開發(fā)框架中使用的SSM進(jìn)行理論、方法和步驟進(jìn)行詳細(xì)說(shuō)明。通過(guò)本文的學(xué)習(xí),讀者能夠?qū)W會(huì)使用SSM框架進(jìn)行企業(yè)應(yīng)用開發(fā)的技術(shù)和方法,并能深切地體會(huì)到SSM框架進(jìn)行編程的強(qiáng)大。
參考文獻(xiàn):
[1]沃爾斯. Spring實(shí)戰(zhàn) [M]. 人民郵電出版社,2016.
[2]卡內(nèi)爾. Spring開發(fā)三劍客[M],人民郵電出版社, 2020.
[3] 陳恒等. Spring Boot從入門到實(shí)戰(zhàn)[M]. 清華大學(xué)出版社出版社,2020.
作者簡(jiǎn)介:丁妍(2005.01—),女,現(xiàn)在蘇州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院信息技術(shù)學(xué)院,研究方向:軟件開發(fā)。