[JAVA] 為什麼JAVA開發人員都要學Spring框架? === ###### tags: `Spring` `JAVA` :::success Answer:~~因為不學的話,你大概找不到工作。~~ ::: 以上是個真實情況,從學習JAVA後前輩都說Spring有多重要一定要學。 所以也沒有多想的就直接學下去了。 但為什麼我們要學Spring Framwork呢? 以下為個人吸收前人的說法、網路上各式文章得出來的心得。 ## 以開發來說... 一般以系統開發來說,為了完成特定功能或需求,但很多基礎功能又不想自己實作時,就會使用到大量的現成 API,來協助我們快速的開發。(例如:要提供log輸出的話,可以使用Log4j、logback、Apache common logging、 java.util.Logger...等) 但這些 API 設計的嚴謹程度不同、版本適配相容性也不同,在彼此之間也有一些軟體工程依存議題,在使用到大量的 API 時,可能會造成在後面在整合時會有一些困擾。 這些問題雖然都可以解決,但就會吃工程師的程式設計的功力去把他們兜起來。但又有一個問題來了,**這些程式設計的功力是累積在個人身上**,每個人的學習路徑不同、程式風格偏好也不同。如果系統換了一個人來接手,那麼這個人除了要有相對應的程式設計功力,還要去適應前人的風格偏好,而造成比較大的困擾。且在大量API的更新同步問題上,個人控管比較不具整體性,可能會出現A更新但B沒更新的不一致性。 這時候就會需要有一個完整規劃好背後軟體工程的架構來做支撐,也就是使用框架,也就是使用該語言的開發人員公認最強大的框架- Spring Framwork。 ### Spring Framwork 架構圖 ![](https://i.imgur.com/28YUKdI.png) Spring 是一個混和式的framwork,不像Hibernate是專門用來處理與資料庫做data access的功能,他整合了很多的子框架堆疊出更完整的功能支援,使用者可以依照自己的需求決定要使用哪些部分。但唯一不變的是,不管使用了哪些部分,都遵守著Spring Framwork 在 **DI與IoC**的核心概念。 Spring Framwork 背後有著優良的軟體工程來做支撐,Java開發人員得以開發出結構良好、易於維護、易於測試的應用程式。透過Spring Framework的輔助,只需專注在撰寫自身核心的業務邏輯,其它非業務邏輯則交由Spring Framework所搭建的基礎設施來代勞,藉此大幅提升開發人員的生產力。易擴展、簡化開發、速度快,擁有廣大的社群支援,無論在哪個地方都可以找到支持和資源來幫助你解決難題。且大家學習的都是同一套框架,可大幅降低開發人員對於架構上的溝通的門檻。