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