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