周永政 劉莎莎
山東農(nóng)業(yè)大學(xué) 山東 泰安 271018
在IT領(lǐng)域技術(shù)不斷發(fā)展的時(shí)代,Java Web的開發(fā)框架也不斷推陳出新,Java Web框架技術(shù)可以簡(jiǎn)單理解為一個(gè)能夠復(fù)用的設(shè)計(jì)構(gòu)件,每一種框架都規(guī)定了相應(yīng)的使用規(guī)則,使用框架技術(shù)可以簡(jiǎn)化很多業(yè)務(wù)邏輯之外的功能,可以為實(shí)現(xiàn)業(yè)務(wù)邏輯提供通用的方法,提高了開發(fā)人員在Java Web中的開發(fā)效率,本文旨在探討部分主流Web開發(fā)中的框架技術(shù),為開發(fā)人員提供參考。
Spring是一種輕量級(jí)的Java EE企業(yè)級(jí)應(yīng)用開發(fā)的開源框架,有效地解決了在開發(fā)企業(yè)級(jí)應(yīng)用時(shí)的復(fù)雜問題,如圖1為Spring框架結(jié)構(gòu)圖。在使用Spring框架時(shí)使用人員只需要關(guān)注核心業(yè)務(wù)開發(fā),不需要花過多精力在與業(yè)務(wù)無(wú)關(guān)的技術(shù)問題,Spring框架的核心是提供了一個(gè)容器,該容器可以對(duì)Java Bean組件的生命周期進(jìn)行管理,如創(chuàng)建或者銷毀一個(gè)Java Bean對(duì)象等操作。在Spring框架中可以使用便捷的Java Bean來解決EJB存在的性能問題,利用spring框架管理MVC架構(gòu)中的Controller、Service、Dao三大部分,為企業(yè)提供方便高效的應(yīng)用功能[1]。Spring的諸多優(yōu)秀特點(diǎn)使得其當(dāng)今最為熱門的Java開發(fā)框架。
圖1 Spring框架結(jié)構(gòu)圖
Spring具有IoC(控制反轉(zhuǎn))和AOP(切面編程)兩大核心特征。Spring因其控制反轉(zhuǎn)的特性有效地解決了實(shí)現(xiàn)業(yè)務(wù)邏輯過程中因手動(dòng)創(chuàng)建對(duì)象時(shí)所造成的耦合問題,使用Spring框架時(shí),可以通過多種依賴注入的方式提供對(duì)象的使用,如通過Set注入、構(gòu)造器注入或動(dòng)態(tài)工廠注入等方式實(shí)現(xiàn)對(duì)JavaBean的生命周期和JavaBean間的依賴關(guān)系的管理功能,極大降低了對(duì)象間的耦合程度,簡(jiǎn)化應(yīng)用的開發(fā);AOP(面向切面編程)是Spring框架的另一個(gè)核心特征,Spring可以通過基于動(dòng)態(tài)代理、AspectJ注解方式等注入方式實(shí)現(xiàn)AOP,通過配置類文件可以在不修改代碼的情況下,在調(diào)用目標(biāo)的對(duì)象方法前或者在調(diào)用方法后擴(kuò)充該方法,為系統(tǒng)的后期維護(hù)提供極大便利,Spring還提供了日志記錄、安全控制、事務(wù)處理等功能。Spring通過對(duì)Junit的支持也極大地為開發(fā)人員提供了方便程序的測(cè)試,可以通過注解實(shí)現(xiàn)便捷的Spring程序的測(cè)試。Spring集成性好,可以與不同優(yōu)秀的第三方框架整合如:Struts2、Mybatis、Hibernate等。
Spring MVC是Spring在Web應(yīng)用的優(yōu)秀輕量級(jí)框架,屬于在MVC的設(shè)計(jì)模型中十分重要的組成部分之一,它能夠使得Model、View、Controller有效進(jìn)行分離,降低了不同模塊間的耦合度,使得不同層次在處理程序時(shí)更高效,有利于組件的重用[2]。Spring MVC是Spring的一個(gè)模塊它與Spring的兼容性好,很好地繼承了Spring的拓展性,有著同樣完善的注解機(jī)制使得Spring MVC的易用性有著極大幅度的提高,提供完善的組件便于使用,并且支持多種視圖技術(shù)。
Spring MVC的執(zhí)行流程如圖2 Spring MVC的執(zhí)行流程所示:客戶端發(fā)送用戶請(qǐng)求給前端控制器,在前端控制器收到請(qǐng)求后,會(huì)根據(jù)具體的請(qǐng)求信息交給HandlerMapping,由HandlerMapping查找Handler并將查找到的執(zhí)行鏈返回,當(dāng)執(zhí)行鏈返回后,前端控制器請(qǐng)求Handler Adpter調(diào)用相應(yīng)的處理器執(zhí)行處理,將處理后返回的數(shù)據(jù)及視圖信息(Model And View)返回給前端控制器,最后前端控制器調(diào)用ViewReslover進(jìn)行解析并向前端控制器返回View對(duì)象,前端控制器再將View進(jìn)行渲染,由前端控制器把頁(yè)面信息響應(yīng)給用戶。
圖2 Spring MVC的執(zhí)行流程
因Spring框架的優(yōu)秀性能,使得在java開發(fā)中Spring框架得到了極為廣泛的應(yīng)用,然而在集成使用Spring、SpringMVC、Mybatis或者Spring、Struts2、Hibernate架構(gòu)構(gòu)建項(xiàng)目時(shí),首先需要配置maven的pom.xml配置文件,添加相應(yīng)的依賴包,然后配置web服務(wù)器,添加各種配置文件如Mybatis核心配置文件(mybatis-config.xml)、配置連接數(shù)據(jù)庫(kù)的相關(guān)信息jdbc.properties配置文件等,還需在spring配置文件中加載資源文件、配置連接池、數(shù)據(jù)源、定義事務(wù)管理器等一些煩瑣而復(fù)雜的工作,更重要的是如果開發(fā)類似項(xiàng)目時(shí),仍需重復(fù)上述煩瑣配置工作,增加了開發(fā)人員的工作量,SpringBoot是Spring的拓展,它的出現(xiàn)消除了以上Spring應(yīng)用程序在創(chuàng)建過程中的配置,使得Spring應(yīng)用開發(fā)、測(cè)試部署等更加高效[3]。
SpringBoot框架的設(shè)計(jì)目的在于簡(jiǎn)化Spring應(yīng)用的搭建以及開發(fā)過程[4],可以作為Spring搭建的腳手架,實(shí)現(xiàn)項(xiàng)目的快速構(gòu)建,SpringBoot整合其他框架時(shí),可以實(shí)現(xiàn)無(wú)配置的集成,提供了默認(rèn)的集成配置,集成過程只需添加相應(yīng)的框架依賴,大多可通過簡(jiǎn)單的配置完成Spring應(yīng)用的創(chuàng)建,同時(shí)Spring Boot封裝了Servlet容器,節(jié)省了將web項(xiàng)目部署到服務(wù)器上的工作量,可獨(dú)立運(yùn)行項(xiàng)目。
Mybatis是當(dāng)前java開發(fā)中一個(gè)輕量級(jí)足夠靈活的優(yōu)秀持久層框架,主要應(yīng)用在開發(fā)中的數(shù)據(jù)訪問層,它能支持高級(jí)映射的機(jī)制,也提供存儲(chǔ)過程查詢和sql查詢。對(duì)于新工作的開發(fā)人員來說,其門檻較低, Mybatis內(nèi)部封裝jdbc,簡(jiǎn)化了原始jdbc在持久層中注冊(cè)驅(qū)動(dòng)、建立連接、創(chuàng)建運(yùn)行的sql語(yǔ)句等工作,并且還通過配置XML文件或者注解的方式配置Statement,能夠動(dòng)態(tài)生成sql語(yǔ)句。Mybatis另一優(yōu)點(diǎn)是不會(huì)對(duì)應(yīng)用程序或者數(shù)據(jù)庫(kù)現(xiàn)有的設(shè)計(jì)產(chǎn)生影響,同時(shí)還提供較多的第三方插件如:PageHelper、mybatis-plugin等,Mybatis與Spring有良好的集成,Sql語(yǔ)句寫在xml的配置文件里,實(shí)現(xiàn)了java代碼和sql的分離,有利于維護(hù)系統(tǒng),降低了耦合性,也更易于單元測(cè)試,Mybatis還支持Mapper代理開發(fā)方式實(shí)現(xiàn)Dao層開發(fā),簡(jiǎn)化了持久層的開發(fā)過程。Mybatis的框架結(jié)構(gòu)圖如圖3所示。
圖3 Mybatis框架構(gòu)圖
本文簡(jiǎn)要概述當(dāng)前java開發(fā)中的主流開發(fā)框架,旨在為廣大開發(fā)者提供參考,隨著計(jì)算機(jī)軟件的開發(fā)技術(shù)的不斷發(fā)展以及開發(fā)需求的不斷提出,框架技術(shù)將會(huì)不斷優(yōu)化更新,為開發(fā)者提供更為優(yōu)質(zhì)、高效的開發(fā)工具 。