更新時(shí)間:2020-06-20 12:36:52 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1968次
Spring框架是由于軟件開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用的是基本的JavaBean來(lái)完成以前只可能由EJB完成的事情。然而,Spring的用途不僅僅限于服務(wù)器端的開發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合性的角度而言,絕大部分Java應(yīng)用都可以從Spring中受益。
Spring優(yōu)點(diǎn):
低侵入式設(shè)計(jì),代碼的污染極低;
獨(dú)立于各種應(yīng)用服務(wù)器,基于Spring框架的應(yīng)用,可以真正實(shí)現(xiàn)Write Once,Run Anywhere的承諾;
Spring的IoC容器降低了業(yè)務(wù)對(duì)象替換的復(fù)雜性,提高了組件之間的解耦
Spring的AOP支持允許將一些通用任務(wù)如安全、事務(wù)、日志等進(jìn)行集中式管理,從而提供了更好的復(fù)用;
Spring的ORM和DAO提供了與第三方持久層框架的良好整合,并簡(jiǎn)化了底層的數(shù)據(jù)庫(kù)訪問;
pring的高度開放性,并不強(qiáng)制應(yīng)用完全依賴于Spring,開發(fā)者可自由選用Spring框架的部分或全部。
Spring的核心機(jī)制
管理Bean
程序主要是通過Spring容器來(lái)訪問容器中的Bean,ApplicationContext是Spring容器最常用的接口,該接口有如下兩個(gè)實(shí)現(xiàn)類:
ClassPathXmlApplicationContext:從類加載路徑下搜索配置文件,并根據(jù)配置文件來(lái)創(chuàng)建Spring容器;
FileSystemXmlApplicationContext:從文件系統(tǒng)的相對(duì)路徑或絕對(duì)路徑下去搜索配置文件,并根據(jù)配置文件來(lái)創(chuàng)建Spring容器
publicclassBeanTest{publicstaticvoidmain(String args)throws Exception{ApplicationContext ctx=newClassPathXmlApplicationContext("beans.xml");Person p=ctx.getBean("person",Person.class);p.say;}}
Eclipse使用Spring
在Eclipse等IDE工具中,用戶可以自建User Library,然后把Spring的Jar包都放入其中,當(dāng)然也可以將Jar包直接放在項(xiàng)目的/WEB-INF/lib目錄下,但是如果使用User Library,在項(xiàng)目發(fā)布時(shí),需要將用戶庫(kù)所引用的Jar文件隨應(yīng)用一起發(fā)布,就是將User Library所使用的Jar復(fù)制到/WEB-INF/lib目錄下,這是因?yàn)閷?duì)于一個(gè)Web應(yīng)用,Eclipse部署Web應(yīng)用時(shí)不會(huì)將用戶庫(kù)的Jar文件復(fù)制到/WEB-INF/lib下,需要手動(dòng)復(fù)制。
依賴注入
Spring框架的核心功能有兩個(gè):
Spring容器作為超級(jí)大工廠,負(fù)責(zé)創(chuàng)建、管理所有的Java對(duì)象,這些Java對(duì)象被稱為Bean;
Spring容器管理容器中Bean之間的依賴關(guān)系,Spring使用一種被稱為“依賴注入”的方式來(lái)管理Bean之間的依賴關(guān)系。
使用依賴注入,不僅可以為Bean注入普通的屬性值,還可以注入其他Bean的引用。依賴注入是一種優(yōu)秀的解耦方式,其可以讓Bean以配置文件組織在一起,而不是以硬編碼的方式耦合在一起。
理解依賴注入
Rod Johnson是第一個(gè)高度重視以配置文件來(lái)管理Java實(shí)例的協(xié)作關(guān)系的人,他給這種方式起了一個(gè)名字:控制反轉(zhuǎn)(Inverse of Control,IoC)。后來(lái)Martine Fowler為這種方式起了另一個(gè)名稱:依賴注入(Dependency Injection),因此不管是依賴注入,還是控制反轉(zhuǎn),其含義完全相同。當(dāng)某個(gè)Java對(duì)象(調(diào)用者)需要調(diào)用另一個(gè)Java對(duì)象(被依賴對(duì)象)的方法時(shí),在傳統(tǒng)模式下通常有兩種做法:
原始做法:調(diào)用者主動(dòng)創(chuàng)建被依賴對(duì)象,然后再調(diào)用被依賴對(duì)象的方法;
簡(jiǎn)單工廠模式:調(diào)用者先找到被依賴對(duì)象的工廠,然后主動(dòng)通過工廠去獲取被依賴對(duì)象,最后再調(diào)用被依賴對(duì)象的方法。
注意上面的主動(dòng)二字,這必然會(huì)導(dǎo)致調(diào)用者與被依賴對(duì)象實(shí)現(xiàn)類的硬編碼耦合,非常不利于項(xiàng)目升級(jí)的維護(hù)。使用Spring框架之后,調(diào)用者無(wú)需主動(dòng)獲取被依賴對(duì)象,調(diào)用者只要被動(dòng)接受Spring容器為調(diào)用者的成員變量賦值即可,由此可見,使用Spring后,調(diào)用者獲取被依賴對(duì)象的方式由原來(lái)的主動(dòng)獲取,變成了被動(dòng)接受——所以Rod Johnson稱之為控制反轉(zhuǎn)。
另外從Spring容器的角度來(lái)看,Spring容器負(fù)責(zé)將被依賴對(duì)象賦值給調(diào)用者的成員變量——相當(dāng)于為調(diào)用者注入它依賴的實(shí)例,因此Martine Fowler稱之為依賴注入。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“學(xué)習(xí)spring必學(xué)的java基礎(chǔ)知識(shí)”的內(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