Spring – 01 關於 Spring framework 的那點事

Hello 大家好!

在我們開始學習Spring framework之前(以下簡稱Spring),先對這個幾近「萬能」的框架有個基本的認識吧!

Spring是一個開源的Java應用程式框架,它提供了一個良好的基礎建設,我們可以在上面開發出結構良好、容易維護、容易測試的應用程式,只要事先搭建好這個框架,我們就可以把大部份的心力都專注在核心業務邏輯的實作。換句話說,Spring就是為了簡化開發Java應用程式的複雜性而存在的。
那麼Spring從哪些面向來讓Java開發人員的生活比較輕鬆一點呢?

從底層基礎的面向來看:

  • 透過介面(interface)以及依賴注入(dependency injection),來實現元件之間的鬆散藕合(loose coupling)
    • 這麼一來,元件之間都是透過介面來溝通,彼此的底層實作如果有異動,也不致於影響整個流程的運作
    • 再者,元件本身不必知道如何建立或取得相依元件的參考(reference),而是統一透過Spring這樣的IoC (inversion of control)容器來處理元件的建立以及依照事前的設定來注入所相依的元件
    • 結構鬆散的元件架構也讓開發人員在作單元測試(unit testing)時變的容易舉例來說,假設系統內支援多種登入方式

      對於呼叫方來說,可以透過設定的方式來選用符合需求的登入方式,在程式碼一律透過interface來呼叫
  • 支援AOP (aspect oriented programming)
    • Spring AOP 採用宣告式的作法來為系統流程統一「加上」額外的功能,例如logging, 交易管理(transaction management), 安全性控管(security management)…等等,這些功能的增減並不會影響原本已寫好的程式碼aop

從實際運用的面向來看:

  • Spring定義了許多”template”來簡化原本重複、繁雜甚至「囉唆」的程式碼,請回想一下JDBC裡面 Connection, Statement, ResultSet的建立、關閉等等動作,在Spring裡 JdbcTemplate 會是你的好幫手
  • Spring 包山包海的支援各種需求,從資料庫、交易管理、message queue到web, view層都有提供支援

初學Spring的各位,請先別被上面一大堆專有名詞嚇到,之後將會為各位一一解釋!

用了Spring這麼多年,個人認為Spring對於Java開發人員來說,就好像馬蓋先手上那把瑞士刀,通常我們不會一下子用到所有的工具,但我們有必要知道每個工具的特性,才能在不同的狀況需求下挑選出最棒的黃金組合!

下個主題將為大家解釋 Spring核心概念- dependency injection

Facebook Comments