Spring Framework 的理解以及可維護(hù)性是否得以改善的思考
Spring的特性:
1. 提供了一種管理對(duì)象的方法,可以把中間層對(duì)象有效地組織起來(lái)。一個(gè)完美的框架“黏合劑”。
2. 采用了分層結(jié)構(gòu),可以增量引入到項(xiàng)目中。
3. 有利于面向接口編程習(xí)慣的養(yǎng)成。
4. 目的之一是為了寫(xiě)出易于測(cè)試的代碼。
5. 非侵入性,應(yīng)用程序?qū)pring API的依賴(lài)可以減至最小限度。
6. 一致的數(shù)據(jù)訪問(wèn)介面。
6. 一個(gè)輕量級(jí)的架構(gòu)解決方案。
對(duì)Spring的理解
Spring致力于使用POJOs來(lái)構(gòu)建應(yīng)用程序。由框架提供應(yīng)用程序的基礎(chǔ)設(shè)施,將只含有業(yè)務(wù)邏輯的POJOs作為組件來(lái)管理。從而在應(yīng)用程序中形成兩條相對(duì)獨(dú)立發(fā)展的平行線,并且在各自的抽象層面上延長(zhǎng)了各自的生命周期。
Spring的工作基礎(chǔ)是Ioc。Ioc將創(chuàng)建對(duì)象的職責(zé)從應(yīng)用程序代碼剝離到了框架中,通常2中注入方式:setter 和 ctor參數(shù)。
每個(gè)Bean定義被當(dāng)作一個(gè)POJO(通過(guò)類(lèi)名和JavaBean的初始屬性或構(gòu)造方法參數(shù)兩種方式定義的Bean)。
Spring的核心在org.springframework.beans,更高抽象層面是BeanFactory. BeanFactory是一個(gè)非常輕量級(jí)的容器。
關(guān)于可維護(hù)性的思考
Spring之類(lèi)的技術(shù)確實(shí)帶來(lái)了應(yīng)用系統(tǒng)的可維護(hù)性的提高嗎?
Ioc, AOP之類(lèi)的技術(shù),本質(zhì)上都是將原本位于應(yīng)用程序代碼中"硬編碼"邏輯,剝離出來(lái)放到了配置文件中(或者其他形式)。主流聲音都是認(rèn)為提高了應(yīng)用程序的可維護(hù)性。
但如果從以下方面觀察,結(jié)合項(xiàng)目實(shí)際經(jīng)驗(yàn),個(gè)人感覺(jué)這些技術(shù)的應(yīng)用大大降低了應(yīng)用程序的可維護(hù)性,尤其是面對(duì)一個(gè)陌生的系統(tǒng),或者項(xiàng)目人員變動(dòng)頻繁的時(shí)候。
1. 中斷了應(yīng)用程序的邏輯,使代碼變得不完整,不直觀。此時(shí)單從Source無(wú)法完全把握應(yīng)用的所有行為。
2. 將原本應(yīng)該代碼化的邏輯配置化,增加了出錯(cuò)的機(jī)會(huì)以及額外的負(fù)擔(dān)。
3. 時(shí)光倒退,失去了IDE的支持。在目前IDE功能日益強(qiáng)大的時(shí)代,以往代碼重構(gòu)等讓人頭痛的舉動(dòng)越來(lái)越容易。而且IDE還提供了諸多強(qiáng)大的輔助功能,使得編程的門(mén)檻降低很多。通常來(lái)說(shuō),維護(hù)代碼要比維護(hù)配置文件,或者配置文件+代碼的混合體要容易的多。
4. 調(diào)試階段不直觀,后期的bug對(duì)應(yīng)階段,不容易判斷問(wèn)題所在。
5. 性能問(wèn)題。雖說(shuō)硬件性能日新月異,但是性能也是在不經(jīng)意間一點(diǎn)一點(diǎn)地流失的。從匯編到高級(jí)語(yǔ)言,到面向?qū)ο螅教摂M機(jī),一直處于這樣的發(fā)展趨勢(shì)。