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