1. 程式人生 > >Spring有哪些優點缺點

Spring有哪些優點缺點

首先Spring 是一個框架,使用Spring並不代表程式碼質量的提高,就像蓋房子選擇用上海的地皮還是北京的地皮一樣,房子質量與土地所在的城市無關,與房子的具體設計方案和選料有關。
使用Spring 等框架可以簡化很多基礎性的工作,配置好後可以方便構建業務應用。

框架使用多了會有侷限的感覺,像小鳥被套在籠子裡,無法飛出去,雖然在籠子裡面吃喝不愁。目前程式設計的門檻越來越低,諸多開源框架廣泛傳播,幾乎沒有什麼技術門檻,會配置就會程式設計,而一個好的DBA對軟體效能會有很大提高,軟體的核心邏輯最終會轉移到對資料庫的操作上,而且對目前從事的工作來講,感覺技術的瓶頸越來越多的侷限在對資料庫的操作上,下一步要認真提高下了。


Spring的優勢不言而喻:

  1. 提供了一種管理物件的方法,可以把中間層物件有效地組織起來。一個完美的框架“黏合劑”。

  2. 採用了分層結構,可以增量引入到專案中。

  3. 有利於面向介面程式設計習慣的養成。

  4. 目的之一是為了寫出易於測試的程式碼。

  5. 非侵入性,應用程式對Spring API的依賴可以減至最小限度。

  6. 一致的資料訪問介面。

  6. 一個輕量級的架構解決方案。

  對Spring的理解

  Spring致力於使用POJOs來構建應用程式。由框架提供應用程式的基礎設施,將只含有業務邏輯的POJOs作為元件來管理。從而在應用程式中形成兩條相對獨立發展的平行線,並且在各自的抽象層面上延長了各自的生命週期。


  Spring的工作基礎是Ioc。Ioc將建立物件的職責從應用程式程式碼剝離到了框架中,通常2中注入方式:setter 和 ctor引數。

  每個Bean定義被當作一個POJO(通過類名和JavaBean的初始屬性或構造方法引數兩種方式定義的Bean)。

  Spring的核心在org.springframework.beans,更高抽象層面是BeanFactory. BeanFactory是一個非常輕量級的容器。

  關於可維護性的思考

  Spring之類的技術確實帶來了應用系統的可維護性的提高嗎?

  Ioc, AOP之類的技術,本質上都是將原本位於應用程式程式碼中"硬編碼"邏輯,剝離出來放到了配置檔案中(或者其他形式)。主流聲音都是認為提高了應用程式的可維護性。


  但如果從以下方面觀察,結合專案實際經驗,個人感覺這些技術的應用大大降低了應用程式的可維護性,尤其是面對一個陌生的系統,或者專案人員變動頻繁的時候。

  1. 中斷了應用程式的邏輯,使程式碼變得不完整,不直觀。此時單從Source無法完全把握應用的所有行為。

  2. 將原本應該程式碼化的邏輯配置化,增加了出錯的機會以及額外的負擔。

  3. 時光倒退,失去了IDE的支援。在目前IDE功能日益強大的時代,以往程式碼重構等讓人頭痛的舉動越來越容易。而且IDE還提供了諸多強大的輔助功能,使得程式設計的門檻降低很多。通常來說,維護程式碼要比維護配置檔案,或者配置檔案+程式碼的混合體要容易的多。

  4. 除錯階段不直觀,後期的bug對應階段,不容易判斷問題所在。