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