Spring的幾個(gè)特點(diǎn)
文章出處:http://www.luckydriving.com 作者:興邦開(kāi)發(fā)部 人氣: 發(fā)表時(shí)間:2016年04月16日
Spring作為實(shí)現(xiàn)J2EE的一個(gè)全方位應(yīng)用程序框架,為我們開(kāi)發(fā)企業(yè)級(jí)應(yīng)用提供了一個(gè)健壯、高效的解決方案。所謂全方位,不得不說(shuō)以下幾個(gè)特點(diǎn):
1 、非侵入式:對(duì)于寫代碼從來(lái)不考慮復(fù)用和移植的程序員來(lái)說(shuō),這一點(diǎn)根本就沒(méi)有吸引力,那么請(qǐng)?zhí)^(guò)。所謂非侵入式是指Spring框架的API不會(huì)在業(yè)務(wù)邏輯上出現(xiàn),也就是說(shuō)我們的業(yè)務(wù)邏輯應(yīng)該是純凈的,不能出現(xiàn)與業(yè)務(wù)邏輯無(wú)關(guān)的代碼。首先針對(duì)應(yīng)用而言,這樣我們才能將業(yè)務(wù)邏輯從當(dāng)前應(yīng)用中剝離出來(lái),從而在其他的應(yīng)用中實(shí)現(xiàn)復(fù)用;其次針對(duì)框架而言,由于業(yè)務(wù)邏輯中沒(méi)有Spring的API,所以業(yè)務(wù)邏輯也可以從Spring框架快速的移植到其他框架。
2 、容器:Spring提供容器功能,容器可以管理對(duì)象的生命周期,對(duì)象與對(duì)象之間的依賴關(guān)系。你可以寫一個(gè)配置文件(通常是xml文件),在上面定義對(duì)象的名字,是否是單例,以及設(shè)置與其他對(duì)象的依賴關(guān)系。那么在容器啟動(dòng)之后,這些對(duì)象就被實(shí)例化好了,你直接去用就好了,而且依賴關(guān)系也建立好了。
3 、IOC:控制反轉(zhuǎn),謂之“依賴關(guān)系的轉(zhuǎn)移”,如果以前都是依賴于實(shí)現(xiàn),那么現(xiàn)在反轉(zhuǎn)為依賴于抽象吧,其實(shí)它的核心思想就是要面向接口編程,至于何謂接口何謂抽象,以及它們的好處,多看看設(shè)計(jì)模式吧,這里就不費(fèi)口舌了。
4、 依賴注入:建立對(duì)象與對(duì)象之間依賴關(guān)系的實(shí)現(xiàn),包括接口注入、構(gòu)造注入、set注入,在Spring中只支持后兩種。
5 、AOP:面向方面編程,我們可以把日志、安全、事務(wù)管理等服務(wù)(或功能)理解成一個(gè)“方面”,那么以前這些服務(wù)一直是直接寫在業(yè)務(wù)邏輯的代碼當(dāng)中的,這有兩點(diǎn)不好;首先業(yè)務(wù)邏輯不純凈,其次這些服務(wù)被很多業(yè)務(wù)邏輯反復(fù)使用,完全可以剝離出來(lái)做到復(fù)用。那么AOP就是這些問(wèn)題的解決方案,我們可以把這些服務(wù)剝離出來(lái)形成一個(gè)“方面”,以期做到復(fù)用;然后將“方面”動(dòng)態(tài)的插入到業(yè)務(wù)邏輯中讓業(yè)務(wù)邏輯能夠享受到此“方面”的服務(wù)。
其他還有一些特點(diǎn)不是Spring的核心,這里只做簡(jiǎn)單陳述,如:對(duì)JDBC的封裝與簡(jiǎn)化,提供事務(wù)管理功能,對(duì)O/R mapping工具(hibernate、iBATIS)的整合;提供MVC解決方案,也可以與其他web框架(Struts、JSF)進(jìn)行整合;還有對(duì)JNDI、mail等服務(wù)進(jìn)行封裝。