更新時(shí)間:2020-06-24 13:00:07 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2229次
話說工欲善其事必先利其器,一個(gè)優(yōu)秀的web框架可以說是程序員的利器,Spring框架應(yīng)是其中牛角,有了它程序員可以更好的關(guān)注業(yè)務(wù)和功能的實(shí)現(xiàn),編碼水平瞬間被提升了一個(gè)等級(jí),然而在每天使用框架的時(shí)候,很多參加JAVA培訓(xùn)的同學(xué)會(huì)好奇或者迷惑,為什么它能夠運(yùn)行起來?為什么僅是添加一個(gè)注解就能夠?qū)⒁粋€(gè)實(shí)例賦值給一個(gè)被注解的變量?那些聽起來高端的概念(如:IOC、DI、AOP等)是如何實(shí)現(xiàn)的呢?
本文我們將通過實(shí)現(xiàn)一個(gè)簡單的JavaWeb框架來理解框架的工作原理和IOC等概念的實(shí)現(xiàn),暫且叫它fine。
首先給出JavaWeb框架工作流程:
下面是具體實(shí)現(xiàn):
1.創(chuàng)建一個(gè)maven項(xiàng)目實(shí)現(xiàn)fine框架創(chuàng)建mavne項(xiàng)目添加相關(guān)依賴,需要的包大致有:servlet、jsp、jstl、log4j、mysql、json、等以及一些工具包,如果你不打算使用視圖層可以忽略jsp和jstl的依賴包。
2.編寫加載配置項(xiàng)的工具類ConfigHelper。加一些需要的配置變量。
3.開發(fā)類加載器ClassUtil。在程序啟動(dòng)之初加載基礎(chǔ)包下所有類。
4.編寫注解類,比如 Action(接受http請(qǐng)求的方法), Inject(依賴注入)等。注解的概念在書《Java編程思想》中介紹的很清楚,是一種標(biāo)記,本框架中的注解就是為了在運(yùn)行中框架能夠讓程序知道被注解的類、方法或者變量有哪些。
5.實(shí)現(xiàn)Bean容器ClassHelper。利用反射機(jī)制,將上一步加載的類實(shí)例化成對(duì)象,并將這些對(duì)象放入一個(gè)靜態(tài)的Map中,此Map就是Bean容器,它記錄了類與對(duì)象的關(guān)系,以后需要單例的對(duì)象時(shí)就從Bean容器中取出。
6.實(shí)現(xiàn)依賴注入,也就是IoC(控制反轉(zhuǎn)),框架來控制對(duì)象之間的依賴關(guān)系,將一個(gè)對(duì)象賦值給一個(gè)加了相應(yīng)標(biāo)記(注解)的變量。具體實(shí)現(xiàn)過程是將第4步中的Bean容器(Map)做遍歷操作,查看當(dāng)前類的成員變量是否帶有Inject注解,若帶有該注解,就從Bean容器中取出對(duì)象,賦值給當(dāng)前成員變量。
7.實(shí)現(xiàn)Controller層,通過一個(gè)類ControllerHelper統(tǒng)計(jì)請(qǐng)求路徑與方法的對(duì)應(yīng)關(guān)系。通過反射獲取帶有 Action注解的方法,獲取 Action注解中的請(qǐng)求表達(dá)式(請(qǐng)求路徑信息),封裝一個(gè)請(qǐng)求對(duì)象(Request)與處理對(duì)象(Handler),將Request與Handler建立映射關(guān)系,處理請(qǐng)求。
8.實(shí)現(xiàn)一個(gè)請(qǐng)求轉(zhuǎn)發(fā)器,處理所有請(qǐng)求,從HttpServletRequest對(duì)象中獲取請(qǐng)求路徑與參數(shù),將請(qǐng)求路徑與ControllerHelper統(tǒng)計(jì)的請(qǐng)求路徑做對(duì)應(yīng)關(guān)系,并將參數(shù)傳入ControllerHelper中的相應(yīng)方法。
至此,一個(gè)能夠處理http請(qǐng)求的框架終于開發(fā)完成,其中還有很多不足之處,但是通過此框架能夠深入的理解現(xiàn)在工程中使用的優(yōu)秀框架的工作原理,有利于我們更好的在實(shí)際中排查問題,甚至定義一些特定規(guī)則優(yōu)化現(xiàn)有框架。
Java框架視頻教程下載
MyBatis:http://m.dabaquan.cn/javavideo/127.html
SpringMVC:http://m.dabaquan.cn/javavideo/126.html
Spring:http://m.dabaquan.cn/javavideo/125.html
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java框架最新學(xué)習(xí)視頻之實(shí)現(xiàn)一個(gè)Java Web框架”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743