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