新聞中心
這篇文章主要介紹java框架的作用,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
華寧網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
現(xiàn)在做項(xiàng)目都會(huì)使用框架,現(xiàn)在很常見(jiàn)的框架就是
SSH(Struts+SpringMVC+Spring+Hibernate),SSM(Struts/springMVC+Spring+Hibernate)
而我最近做的項(xiàng)目itoo中,使用到框架為easyUI+SpringMVC+EJB+hibernate.做項(xiàng)目分層是為了更好的解耦,分層可以完全不用你框架就能夠解決,為什么還不需要這么多框架呢?
而且現(xiàn)在公司很多web項(xiàng)目的控制層的技術(shù)框架由struts2遷移到springMVC,為什么我們現(xiàn)在做java的web開(kāi)發(fā),會(huì)選擇struts2或者springMVC這樣的框架,而不是使用servlet加jsp這樣的技術(shù)呢?
特別是現(xiàn)在我們web的前端頁(yè)面都是使用velocity這樣的模板語(yǔ)言進(jìn)行開(kāi)發(fā),拋棄了jsp,這樣的選擇又會(huì)給我們java的web開(kāi)發(fā)帶來(lái)什么樣的好處,延著這個(gè)問(wèn)題的思路,我又發(fā)現(xiàn)新的疑問(wèn),為什么現(xiàn)在很多java企業(yè)級(jí)開(kāi)發(fā)都會(huì)去選擇spring框架,spring框架給我們開(kāi)發(fā)的應(yīng)用帶來(lái)了什么?
這么一深入的想還真是不太想的明白,我似乎很難找到一串能讓人完全信服的答案,最終我發(fā)現(xiàn),這些我認(rèn)為我很熟悉很常用的技術(shù),其實(shí)還有很多讓我陌生不解的地方,這些陌生和不解的地方也正是我是否能更高層次使用它們的關(guān)鍵,不過(guò)struts2,spring這樣的技術(shù)經(jīng)過(guò)這么多年的積累已經(jīng)是相當(dāng)龐大和復(fù)雜,它們的面很廣,本人雖然已經(jīng)用了它們很長(zhǎng)時(shí)間,還是有很多技術(shù)不熟悉和不清楚.
使用框架有一個(gè)很籠統(tǒng)的好處:第一,可以加快開(kāi)發(fā)進(jìn)程,在類(lèi)似項(xiàng)目中重用代碼將為開(kāi)發(fā)者節(jié)省大量的時(shí)間和精力.框架為執(zhí)行繁瑣的代碼任務(wù)提供預(yù)建模塊.
這個(gè)好處放在哪一個(gè)框架都是很適用的.但是再往深層的想呢?
其實(shí)在軟件里有很多優(yōu)秀的框架,有一種類(lèi)型的框架,它的特點(diǎn)是建立在一個(gè)現(xiàn)有技術(shù)的基礎(chǔ)上,提供和現(xiàn)有技術(shù)一樣業(yè)務(wù)功能的技術(shù)框架,這個(gè)新的技術(shù)框架比原技術(shù)更加易用,更加健壯同時(shí)功能更加強(qiáng)大。
例如:jQuery,以及本文所要談到的struts2和springMVC,深究這些框架都是相當(dāng)之復(fù)雜,但是它們的優(yōu)點(diǎn)其實(shí)只有一個(gè):就是讓使用者只關(guān)心核心業(yè)務(wù)的開(kāi)發(fā),框架幫你屏蔽原有技術(shù)跟業(yè)務(wù)開(kāi)發(fā)無(wú)關(guān)的各類(lèi)技術(shù)問(wèn)題。像jQuery,struts2或springMVC這類(lèi)框架之所以優(yōu)秀,就是它們?cè)谶@點(diǎn)上做的太好了,以至于很多使用它的程序員都已經(jīng)不清楚原有技術(shù)的真實(shí)面目,因此我們要將struts2理解的更好,使用的更加熟練和深入,這里我們就要跳出struts2的技術(shù),到struts2技術(shù)的源頭servlet,仔細(xì)研究下servlet的特點(diǎn),只有這樣我們才能把struts2框架學(xué)的更好。
Servlet的作用是接收瀏覽器傳給服務(wù)端的請(qǐng)求(request),并將服務(wù)端處理完的響應(yīng)(response)返回給用戶的瀏覽器,瀏覽器和服務(wù)端之間通過(guò)http協(xié)議進(jìn)行溝通,其過(guò)程是瀏覽器根據(jù)用戶的選擇將相關(guān)信息按http協(xié)議報(bào)文的規(guī)范組裝請(qǐng)求的http報(bào)文,報(bào)文通過(guò)網(wǎng)絡(luò)傳輸?shù)街付ǖ?a title="服務(wù)器" target="_blank" >服務(wù)器,服務(wù)器通過(guò)特定的web容器接收這個(gè)報(bào)文信息。
例如:tomcat,jetty,jboss這樣的web容器,web容器會(huì)將http報(bào)文解析出來(lái),如果是用戶請(qǐng)求,最終解析出來(lái)的報(bào)文信息會(huì)用一個(gè)request對(duì)象存儲(chǔ)起來(lái),服務(wù)端使用這個(gè)request做完相應(yīng)的處理后,服務(wù)端程序?qū)⒔Y(jié)果信息封裝到response對(duì)象里,然后將response對(duì)象交給web容器,web容器則把這個(gè)response對(duì)象轉(zhuǎn)變?yōu)閔ttp協(xié)議的報(bào)文,并將報(bào)文回傳給瀏覽器,瀏覽器最后解析這個(gè)響應(yīng)報(bào)文,將最終結(jié)果展示給用戶。
Web容器創(chuàng)造了servlet接口,servlet接口就是開(kāi)發(fā)人員自己實(shí)現(xiàn)業(yè)務(wù)邏輯的地方,程序員開(kāi)發(fā)servlet就好比做填空題,而填空題的語(yǔ)境或者說(shuō)上下文提示就是由request和response對(duì)象,但是javaEE規(guī)范里的servlet接口很簡(jiǎn)單,就三個(gè)方法init,service和destory,但是這個(gè)接口太籠統(tǒng),所以規(guī)范里還提供了一個(gè)HttpServlet類(lèi),這個(gè)類(lèi)根據(jù)http請(qǐng)求類(lèi)型提供了doGet,doPost等方法,servlet接口最大的特點(diǎn)就是根據(jù)http協(xié)議的特點(diǎn)進(jìn)行定義,因此做servlet開(kāi)發(fā)時(shí)候如果使用者對(duì)http協(xié)議特點(diǎn)不是特別熟悉,都會(huì)碰到或多或少令人迷惑的問(wèn)題,特別是碰到一些復(fù)雜特殊的請(qǐng)求時(shí)候:
例如文件上傳,返回特殊的文件格式到瀏覽器,這時(shí)候使用servlet開(kāi)發(fā)就不是很方便了,servlet開(kāi)發(fā)還有個(gè)問(wèn)題可能大家常常被忽視,就是請(qǐng)求的數(shù)據(jù)的類(lèi)型轉(zhuǎn)化,http協(xié)議傳輸都是文本形式,到了web容器解析后也是文本類(lèi)型,如果碰到貨幣,數(shù)字,日期這樣的類(lèi)型需要我們根據(jù)實(shí)際情況進(jìn)行轉(zhuǎn)化,如果頁(yè)面?zhèn)魉偷男畔⒎浅6?,我們就不得不做大量?lèi)型轉(zhuǎn)化,這種工作沒(méi)有什么技術(shù)含量,是個(gè)體力活而且很容易導(dǎo)致程序錯(cuò)誤。
同時(shí)java的企業(yè)開(kāi)發(fā)都是圍繞javabean進(jìn)行,類(lèi)型轉(zhuǎn)化好的數(shù)據(jù)還要封裝到對(duì)應(yīng)的javabean里,這種轉(zhuǎn)來(lái)轉(zhuǎn)去的事情對(duì)于項(xiàng)目開(kāi)發(fā)絕對(duì)不是什么好事情,所以古老的struts1為這種問(wèn)題找到了一種解決方案,就是定義了一個(gè)DTO對(duì)象(數(shù)據(jù)傳輸對(duì)象),專(zhuān)門(mén)負(fù)責(zé)做這樣的事情,不過(guò)到了struts2,整個(gè)替代servlet的action本身就是一個(gè)javabean。
Java的企業(yè)開(kāi)發(fā)一個(gè)技術(shù)特點(diǎn)就是使用javabean進(jìn)行的,struts2的特點(diǎn)之一就是它替代servlet的操作類(lèi)就是一個(gè)典型的javabean,首先struts2框架將頁(yè)面?zhèn)鬏數(shù)臄?shù)據(jù)進(jìn)行類(lèi)型轉(zhuǎn)化和封裝后將請(qǐng)求信息封裝到了這個(gè)javabean的屬性里,這樣我們開(kāi)發(fā)web程序時(shí)候就省去了煩心的類(lèi)型轉(zhuǎn)化和封裝的問(wèn)題,前面我講到傳統(tǒng)的servlet是根據(jù)http協(xié)議進(jìn)行定義的,它會(huì)按你請(qǐng)求方式(post還是get方式)來(lái)處理用戶的請(qǐng)求。
但是對(duì)于一名程序開(kāi)發(fā)人員而言,一個(gè)請(qǐng)求,具體到一個(gè)url,其實(shí)對(duì)于服務(wù)端而言就是服務(wù)端對(duì)外提供的一個(gè)功能,或者說(shuō)是服務(wù)端對(duì)外的一個(gè)動(dòng)作,如果我們使用servlet開(kāi)發(fā)程序我們就得把http的動(dòng)作轉(zhuǎn)化為具體的業(yè)務(wù)動(dòng)作,這就讓程序開(kāi)發(fā)變得繁瑣,增強(qiáng)了開(kāi)發(fā)的難度,所以struts2替代servlet的javabean就屏蔽了servlet里http的請(qǐng)求方式和具體業(yè)務(wù)動(dòng)作轉(zhuǎn)化的問(wèn)題,javabean里的每一個(gè)方法都可以和每一個(gè)url請(qǐng)求一一對(duì)應(yīng),這必然減輕了開(kāi)發(fā)的難度問(wèn)題。
Servlet另一個(gè)作用就是構(gòu)造response對(duì)象,讓頁(yè)面獲得正確的響應(yīng),其實(shí)現(xiàn)代的瀏覽器是一個(gè)多媒體工具,文字,圖片,視屏等等東西都可以在瀏覽器里顯示,資源的不同就會(huì)導(dǎo)致http響應(yīng)報(bào)文的差別,如果我們使用servlet開(kāi)發(fā)就要根據(jù)資源的不同在java程序里用硬編碼的形式處理,這樣的程序很難復(fù)用,而且如果程序員對(duì)某種資源的處理理解不到位,就會(huì)導(dǎo)致問(wèn)題的出現(xiàn),struts2通過(guò)配置文件的形式將這樣的邏輯從java程序里剝離出來(lái),使用配置的方式進(jìn)行統(tǒng)一管理,這個(gè)做法和spring的AOP方式類(lèi)似,這樣就讓結(jié)果處理方式更加統(tǒng)一,更加利于管理,同時(shí)也提升了程序的健壯性以及降低了開(kāi)發(fā)的難度。
Servlet在MVC開(kāi)發(fā)模式里就是其中C層即控制層,控制層就像俄羅斯的雙頭鷹(一個(gè)頭向東看一個(gè)頭向西看)一樣,一個(gè)頭向M層模型層看,一個(gè)頭向V層視圖層看,模型層也是用java編寫(xiě)的,控制層也屬于服務(wù)端語(yǔ)言開(kāi)發(fā),所以M層和C層的溝通沒(méi)有天然的障礙,但是和V層視圖層就不一樣了,這是一個(gè)跨語(yǔ)言的溝通,對(duì)于瀏覽器,它只懂得html,javascript和css,瀏覽器是理解不了java這種語(yǔ)言的東西,但是要讓服務(wù)端的東西能被瀏覽器理解接受,我們就必須得把服務(wù)端的響應(yīng)信息放到頁(yè)面里。
因此就需要一個(gè)技術(shù)把java的信息轉(zhuǎn)化到html頁(yè)面里,這就是javaEE規(guī)范里提供了jsp技術(shù),jsp其實(shí)是一種服務(wù)端技術(shù)而非客戶端技術(shù),不過(guò)它看起來(lái)似乎更像html技術(shù),最早的jsp開(kāi)發(fā)里都是直接將java代碼寫(xiě)到頁(yè)面里,這種壞處誰(shuí)都知道,之后javaEE規(guī)范提供了自定義標(biāo)簽技術(shù),使用一種類(lèi)似html標(biāo)簽的方式來(lái)解析java代碼,struts2框架提供了一整套完整的自定義標(biāo)簽技術(shù),這似乎聽(tīng)起來(lái)不算啥,但是它的作用非凡,因?yàn)樽远x標(biāo)簽之所以叫自定義就是每個(gè)人都可以自己來(lái)定義,如果沒(méi)有一個(gè)規(guī)范必然產(chǎn)生混亂,而且一套完善的自定義標(biāo)簽是個(gè)系統(tǒng)工程,一套完整的自定義標(biāo)簽相當(dāng)于我們?cè)谧约憾x一套新的開(kāi)發(fā)語(yǔ)言,做程序的人聽(tīng)到這個(gè)一定就會(huì)明白開(kāi)發(fā)一套完整的自定義標(biāo)簽的工作量和開(kāi)發(fā)難度都是難以想象的,而且自定義標(biāo)簽都是和控制層緊密相連,其難度又會(huì)增加一個(gè)維度,所以struts2提供的自定義標(biāo)簽對(duì)于業(yè)務(wù)開(kāi)發(fā)帶來(lái)的將是質(zhì)的飛越。
Servlet里還有兩個(gè)重要的技術(shù):監(jiān)聽(tīng)器和過(guò)濾器,對(duì)于監(jiān)聽(tīng)器在web開(kāi)發(fā)里使用的場(chǎng)景比較少,都是一些十分特別的情況才會(huì)使用,大部分web開(kāi)發(fā)里可以忽略它的使用,我們用的最多的監(jiān)聽(tīng)器可能就是對(duì)ServletContext創(chuàng)建和銷(xiāo)毀的監(jiān)聽(tīng)器,ServletContext是整個(gè)web應(yīng)用的全局對(duì)象,它和Web應(yīng)用的生命周期綁定在一起,因此使用這個(gè)監(jiān)聽(tīng)器對(duì)Web應(yīng)用的全局信息進(jìn)行初始化和銷(xiāo)毀操作,例如spring容器的初始化操作。比較有意思的是過(guò)濾器,在struts2里有個(gè)攔截器,它們的作用相同都是用來(lái)攔截請(qǐng)求的,因?yàn)閿r截器是struts2的特有功能,在struts2里使用攔截器自然比使用過(guò)濾器更順手,其實(shí)攔截器所用的技術(shù)比過(guò)濾器更加先進(jìn),因?yàn)閿r截器使用了反射技術(shù),因此攔截器攔截的面更大,控制請(qǐng)求的能力更強(qiáng),它能完成的任務(wù)也會(huì)更加的豐富多彩。
在我第一次接觸struts2是在gxpt系統(tǒng)中,有人告訴我struts設(shè)計(jì)的一個(gè)目的就是想屏蔽在控制層里操作request和response對(duì)象,因?yàn)檫@兩個(gè)http協(xié)議的兒子會(huì)造成web開(kāi)發(fā)里思路的混亂,但是我在實(shí)際開(kāi)發(fā)里卻經(jīng)常不自覺(jué)的使用這兩個(gè)對(duì)象。struts2里用到了太多反射機(jī)制,特別是使用注解做配置,在java里反射的執(zhí)行效率是非常低的,直接使用servlet一定能提升web應(yīng)用的執(zhí)行效率。其實(shí)這個(gè)倒很難做到,因?yàn)楫?dāng)時(shí)我沒(méi)法在servlet里靈活的運(yùn)用spring技術(shù)。
spring技術(shù)可以說(shuō)是java企業(yè)開(kāi)發(fā)里最重要的技術(shù),不過(guò)真的理解spring的作用和意義還真是一件麻煩的事情,很多人對(duì)spring理解其實(shí)都是停留在使用階段(例如:聲明式事務(wù)很好用等等),當(dāng)今的spring技術(shù)生態(tài)環(huán)境里可謂是蔚為壯觀,spring已經(jīng)包羅萬(wàn)象,它的內(nèi)容之多完全不亞于它的本源java語(yǔ)言了,而spring這么大的框都是建立在ioc和aop技術(shù)之上,只有深入理解了這兩個(gè)技術(shù)我們才能明白為什么spring這個(gè)框能裝的下那么多東西了。
首先是ioc,ioc技術(shù)第一個(gè)解釋叫做控制反轉(zhuǎn),它還有個(gè)解釋就是依賴注入,這兩個(gè)名字很難從字面理解,但是當(dāng)你理解它的原理后就會(huì)發(fā)現(xiàn)它們的描述是何等準(zhǔn)確。Ioc技術(shù)的本質(zhì)就是構(gòu)建對(duì)象的技術(shù)換句話說(shuō)就是將一個(gè)類(lèi)實(shí)例化成對(duì)象的技術(shù),在java里實(shí)例化類(lèi)通過(guò)new關(guān)鍵字進(jìn)行的,每次new一個(gè)類(lèi)都會(huì)產(chǎn)生一個(gè)新的實(shí)例對(duì)象,這么做視乎很浪費(fèi),有時(shí)這種浪費(fèi)還挺危險(xiǎn),因?yàn)樵诔绦蜷_(kāi)發(fā)時(shí)候我們常常只需要某個(gè)類(lèi)永遠(yuǎn)只能產(chǎn)生一個(gè)的實(shí)例對(duì)象這個(gè)時(shí)候就得使用單例模式,此外在設(shè)計(jì)模式里還可以通過(guò)工廠方式產(chǎn)生對(duì)象,使用過(guò)spring的人看到上面的文字就知道了,spring里bean的定義就和上面的內(nèi)容一一對(duì)應(yīng),scope屬性single產(chǎn)生單例對(duì)象,prototype產(chǎn)生新對(duì)象,bean還可以通過(guò)工廠方式產(chǎn)生對(duì)象,可以說(shuō)spring的bean就是制造對(duì)象的工具。面向?qū)ο缶幊汤飳?duì)象相當(dāng)于顯示生活中的一個(gè)實(shí)體,
例如我們有個(gè)對(duì)象作用是完成打獵的操作,那么打獵這個(gè)對(duì)象內(nèi)部包含兩個(gè)輔助對(duì)象:人和槍?zhuān)挥腥撕蜆屬x予了打獵這個(gè)對(duì)象,那么打獵對(duì)象才能完成打獵的操作,但是構(gòu)建一個(gè)人和槍的對(duì)象并不是看起來(lái)那么簡(jiǎn)單,這里以槍為例,要?jiǎng)?chuàng)造一把槍我們需要金屬,需要機(jī)床,需要子彈,而機(jī)床和子彈又是兩個(gè)新對(duì)象,這些對(duì)象一個(gè)個(gè)相互嵌套相互關(guān)聯(lián),大伙試想下如果我們?cè)趈ava代碼里構(gòu)建一個(gè)槍的對(duì)象那是何其的復(fù)雜,假如我們要構(gòu)造的不是簡(jiǎn)單的槍對(duì)象而是更加復(fù)雜的航空母艦,那么構(gòu)造這個(gè)對(duì)象的成本之高是讓人難以想象的,怎么來(lái)消除這種對(duì)象相互嵌套相互依賴的關(guān)系了?
spring提供了一種方式,這種方式就是spring提供一個(gè)容器,我們?cè)趚ml文件里定義各個(gè)對(duì)象的依賴關(guān)系,由容器完成對(duì)象的構(gòu)建,當(dāng)我們java代碼里需要使用某個(gè)實(shí)例的時(shí)候就可以從容器里獲取,那么對(duì)象的構(gòu)建操作就被spring容器接管,所以它被稱(chēng)為控制反轉(zhuǎn),控制反轉(zhuǎn)的意思就是本來(lái)屬于java程序里構(gòu)建對(duì)象的功能交由容器接管,依賴注入就是當(dāng)程序要使用某個(gè)對(duì)象時(shí)候,容器會(huì)把它注入到程序里,這就叫做依賴注入。
在java開(kāi)發(fā)里我們想使用某個(gè)類(lèi)提供的功能,有兩種方式,一種就是構(gòu)造一個(gè)新的類(lèi),新的類(lèi)繼承該類(lèi),另一種方式則是將某個(gè)類(lèi)定義在新類(lèi)里,那么兩個(gè)類(lèi)之間就建立一種關(guān)聯(lián)關(guān)系,spring的ioc容器就是實(shí)現(xiàn)了這種關(guān)聯(lián)關(guān)系(記住不是繼承關(guān)系哦),那么某個(gè)類(lèi)要被賦予到新類(lèi)有哪些辦法了?一般只有兩種:一種就是通過(guò)構(gòu)造函數(shù),一種就是通過(guò)setXXX方式,這也是spring容器使用到了兩種標(biāo)準(zhǔn)的注入方式。
不管是上面說(shuō)的繼承方式,還是關(guān)聯(lián)方式其實(shí)都是增強(qiáng)目標(biāo)對(duì)象能力的開(kāi)發(fā)手段,在設(shè)計(jì)模式里有一種代理模式,代理模式將繼承模式和關(guān)聯(lián)模式結(jié)合在一起使用,代理模式就是繼承模式和關(guān)聯(lián)模式的綜合體,不過(guò)這個(gè)綜合體的作用倒不是解決對(duì)象注入的問(wèn)題,而是為具體操作對(duì)象找到一個(gè)保姆或者是秘書(shū),這就和小說(shuō)里的二號(hào)首長(zhǎng)一樣,這個(gè)二號(hào)首長(zhǎng)對(duì)外代表了具體的實(shí)例對(duì)象,實(shí)例對(duì)象的入口和出口都是通過(guò)這個(gè)二號(hào)首長(zhǎng),因?yàn)榫唧w的實(shí)例對(duì)象是一號(hào)首長(zhǎng),一號(hào)首長(zhǎng)是要干大事的,所以一些事務(wù)性,重復(fù)性的工作例如泡茶,安排車(chē)子,這樣的工作是不用勞煩一號(hào)首長(zhǎng)的大駕,而是二號(hào)首長(zhǎng)幫忙解決的,這就是aop的思想,aop解決程序開(kāi)發(fā)里事務(wù)性,和核心業(yè)務(wù)無(wú)關(guān)的問(wèn)題,但這些問(wèn)題對(duì)于業(yè)務(wù)場(chǎng)景的實(shí)現(xiàn)是很有必要的,在實(shí)際開(kāi)發(fā)里aop也是節(jié)省代碼的一種方式。
Spring的核心技術(shù)的作用本質(zhì)就是一個(gè)溝通機(jī)制,spring總是盡全力的讓溝通的雙方信息暢通,同時(shí)降低雙方的溝通成本,在現(xiàn)實(shí)機(jī)構(gòu)里一個(gè)善于溝通的人肯定是該公司的領(lǐng)導(dǎo),很會(huì)溝通的領(lǐng)導(dǎo)能調(diào)動(dòng)起各種資源的積極性,善于溝通的領(lǐng)導(dǎo)就會(huì)做到海納百川,讓各種不同人追隨他,所以當(dāng)今的spring就是一個(gè)大框,什么都可以往里裝。
Spring很像銀行,它不能直接創(chuàng)造物質(zhì)財(cái)富,但是一切資源都要通過(guò)它進(jìn)行流通,它能控制經(jīng)濟(jì)發(fā)展的走向,回到程序的世界,spring的作用是被標(biāo)榜為程序之間的解耦,spring能降低不同模塊之間的耦合度,原因就是在程序開(kāi)發(fā)里不同模塊之間信息的溝通是通過(guò)對(duì)象傳遞完成的,而對(duì)象能否順利傳遞就是要合理的構(gòu)建好對(duì)象,而管理好對(duì)象的構(gòu)建方式就能管理好對(duì)象傳遞,這就是spring給系統(tǒng)架構(gòu)設(shè)計(jì)帶來(lái)的好處。
以上是java框架的作用的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站題目:java框架的作用
本文路徑:http://fisionsoft.com.cn/article/gejich.html