1. 程式人生 > >微服務:Spring Boot第一篇——什麼是Spring

微服務:Spring Boot第一篇——什麼是Spring

因為公司業務需要,先把視覺化的部分放一放,來研究微服務架構。

微服務目前技術選型是Spring Cloud,而Spring Cloud又以Spring Boot為基礎,Spring Boot又是為了簡化Spring繁瑣的配置而出現的,Spring的出現又是為了替代臃腫的EJB,而EJB又是為了讓JAVA語言能夠更好的服務於企業級開發提出的。這樣的一套歷史發展軌跡走下來,感覺這個東西真的是繁雜冗長,從JAVA過來一路縫縫補補,如果一個新人想要學習Spring Boot還要把之前的所有知識都看一遍,這樣下來就算花個半年時間也只能搞個一知半解。不由想起了本科時候寫的SSH,專案交了之後自己都不忍心看,各種配置亂七八糟,感覺一碰就會出BUG.現在的Spring Boot簡化了很多配置,比SSH時代要好了很多,不過和Django這種框架比起來還是笨重了不少。不過可能因為歷史發展比較長,使用的人多,一直有人在試圖讓這些以Java為基礎的工具越來越好用。用輪子總比造輪子方便,Spring Boot和微服務中使用到的各種技術都是輪子,所以我對輪子的理解準備到“什麼樣的車用什麼樣的輪子”、“什麼形狀的輪子走起來快”這種層面,不會到“輪子能向前走是因為摩擦力的原因,前輪向後後輪向前”這樣深刻。

什麼是Spring?Spring誕生於黑暗的EJB1.0時代,在那個時代做J2EE的開發真的是噩夢,Spring就是為了讓Java開發體系更加高效,引入了Spring IOC、AOP、Dependency Injection、Annotation等方法的輕量級框架。瞭解這些東西的原理,只為了讓自己心裡有個底,其實Spring這些特性,總結成軟體工程術語看起來很費勁的,但實際應用中已經是比較普遍的思想了。

上面這張圖需要理解的有幾個地方:

  1. Spring Core:他主要元件是 BeanFactory
    ,它是工廠模式的實現。BeanFactory 使用控制反轉 (IOC) 模式將應用程式的配置和依賴性規範與實際的應用程式程式碼分開。下面會介紹Bean和IOC的概念。
  2. Spring ORM:物件關係對映,簡單的講就是把資料庫裡面的表對映為程式中的物件,使程式碼上面的操作可以直接不用寫SQL語句,直接操作資料庫。
  3. Spring Web MVC:其實MVC的結構很早就出現了,也是比較常見的程式碼結構,不懂得同學百度一下吧。

還有幾個比較重要,或者說經常遇到的概念。

控制反轉(Inversion of Control):聽起來好像一個很複雜又巧妙的方法,其實就是把物件間的依賴關係改變了一下。在以前的編碼方式裡,我們想建立一個包含低階元件的物件,首先會考慮這個低階元件中的屬性,把這個低階元件設計出來之後,再來設計高階元件。比如我們需要設計一個汽車,從低階的輪子開始,然後構造底盤,車身,一件一件向上,如果需要修改某一個低層元件,往往需要同時修改依賴它的所有高層元件;假如把這種依賴關係翻轉一下,讓低層依賴高層,那麼對低層組建的修改不會影響高層元件。依賴注入(Dependency Injection)就是把低層元件物件作為引數傳遞入高層元件中,等於高層元件在執行自己的方法時會告訴Spring自己需要這個低層元件,Spring會根據配置檔案進行一系列初始化,這樣有更好的靈活性。簡而言之,控制反轉把依賴方式改變為從上層到下層,而依賴注入就是Spring實現這件事的方式。

JavaBean的概念:JavaBean是一種規範,規範一,必須有一個public屬性的無引數建構函式,這是為了方便例項化物件;規範二,屬性可以通過get、set方法訪問,為了獲取和設定欄位的值,並提高程式碼通用性;規範三,需要實現 java.io.Serializable 介面,這是為了方便傳輸和儲存物件。

註解(Annotation):按照我的理解就是一個以@開頭的關鍵字,這個關鍵字能通過其他檔案影響程式的執行方式或者過程。以後再Spring Boot中還會遇到,到時候再對照例子來理解吧。


Spring的理解就先到這裡吧,肯定有很多沒有涉及到的,後續如果有需求再學習。