1. 程式人生 > >精講Spring Boot—— 入門+進階+例項

精講Spring Boot—— 入門+進階+例項

Spring Boot到底是什麼

在瞭解Spring Boot之前應該先了解下Spring,因為Spring Boot的核心是基於Spring構建的。Spring是由Rod Johnson在2002年建立的一個開源框架,Spring在建立到現在一直處於飛速發展之中。目前已經成為J2EE開發中的事實標準。但是隨著IT技術的飛速發展,及IT專案變得越來越複雜。如果學習過Spring就知道Spring非常依賴xml檔案進行配置,有時一個專案就有幾十個xml配置檔案,這些繁瑣的配置、以及Spring整合第三方框架的配置問題。經常導致開發效率低下,一不小心就出現丟三拉四;有時一不留神就導致發版失敗,給公司造成經濟損失。

Spring Boot是由Pivotal團隊打造的,並在2014年釋出的一個全新框架,其設計目標就是用來簡化Spring應用的搭建、開發及部署。Spring Boot採用了特定的方式進行配置,從而達到使開發人員不在需要配置繁瑣的xml檔案。簡單的說其實Spring Boot並不是什麼新的框架,就是摒棄了xml的配置方式,使用了一種新的配置方式;然後在maven中使用starter的方式整合了很多第三方框架,同時提供了很多預設的配置引數。

Spring Boot官網(https://spring.io/projects/spring-boot/ )有如【圖1】一段話:

精講Spring Boot—— 入門+進階+例項
【圖1】

這段話這段話跟我上面的解釋大同小異。

Spring Boot為啥不學不行

Spring Boot在短短四年就已經由1.0發展到2.0了;而且就這短短四年就已經紅遍神州大地。無論小公司,還是大企業,都在使用。

1.Spring Boot能幹啥

開啟Spring官網(https://spring.io/ ),映入我們眼簾的是如下一張圖【圖2】:

精講Spring Boot—— 入門+進階+例項
【圖2】

看圖中框住的那塊知道,Spring官方對Spring Boot的定位是Build Anything,意思就是Spring Boot可以構建任何東西。Spring Boot旨在快速、高效,使用最少的配置構建Java應用。學完了Spring Boot,還有更高階的Spring Cloud和Spring Cloud Data Flow。

Spring Cloud的定位是Coordinate Anything (協調任何東西)

Spring Cloud Data Flow的定位是Connect Everything (連線任何東西)

仔細斟酌一下Spring Cloud和Spring Cloud Data Flow,發現Cloud和Data 都跟現在最火的技術關聯在一起,Cloud對應雲,Data對應資料。而Spring Cloud和Spring Cloud Data Flow有基於Spring Boot,所以Spring Boot必須先學。

2.企業招聘對Spring Boot的要求及Spring Boot的百度搜索指數

開啟國內比較知名的招聘網站,例如在獵聘網搜尋一下,可以發現很多Java相關的職位都對Spring Boot技術有所要求。如下【圖3】這個Oralce公司的招聘職位,在招聘的職位描述裡就對Spring Boot有要求。

精講Spring Boot—— 入門+進階+例項
【圖3】

Spring Boot嫣然已經成為Java程式設計師打怪升級的必備技能。就不說Spring Boot有多重要了。
再看下Spring Boot的這個關鍵字的百度搜索指數(http://index.baidu.com),Spring Boot從2014年推出到現在,Spring Boot在百度的搜尋指數一直處於穩步增長的狀態中【圖4】。說明程式設計師或者公司對Spring Boot關注度非常高。

精講Spring Boot—— 入門+進階+例項
【圖4】

3.Spring Boot的好處

使用了Spring Boot後,能給開發人員帶來哪些好處?能給運維人員帶來哪些方便?甚至說能給公司帶來哪些經濟效益?看圖【圖5】說話:

精講Spring Boot—— 入門+進階+例項
【圖5】

1.基於Spring
Spring Boot基於Spring,所以Spring有的優點Spring Boot也有,不需要開發人員去學習一個全新的框架,學習門檻相對降低。

2.快速編碼
Spring Boot的依賴包都是基於maven的pom檔案提供的,而Spring Boot本身就集成了特別多的第三方框架。以前開發Spring應用時,需要用到的第三方框架的庫都需要開發人員一個一個去尋找;現在不需要了,有些可能只需引入一個pom.xml,就能把大量需要用到的第三方庫自動引入到專案中。所以減少了開發工作量,實現快速編碼。

3.模組化
基於Spring Boot開發的專案可以非常簡單的實現模組化程式設計,這樣的話可以非常有效的實現專案的分工合作,減少開發過程中的程式碼衝突。模組化程式設計還可以非常高效的實現減少程式碼的改動量,按需修改模組,降低生產發生事故概率。

4.配置簡單
在文章開頭就說了Spring Boot擯棄了繁瑣的xml配置檔案,大量的配置檔案經常是導致生產事故的原因。Spring Boot大量採用yml形式的配置檔案再加上相應的Annotation,從而大大減少了配置檔案的個數,因為以前的Spring應用引入一個第三方框架說不定就要新增一個配置檔案。舉個例子,比如專案中要引入資料庫連線池HikariCP,就需要新增一個關於HikariCP資料庫連線池的配置檔案,但是使用了Spring Boot採用HikariCP可能就只需要那麼幾行配置就可以了,因為Spring Boot預設整合HikariCP資料庫連線池,提供了很多預設的配置。

5.便捷部署
Spring Boot天生就是為了簡單、快捷部署而生。SpringBoot內嵌了Tomcat,不需要額外部署應用伺服器Tomcat,只需簡單一個Java執行環境即可,而且啟動的命令也非常簡單:java –jar xxx-release.jar。同時Spring Boot結合現在非常火的技術 Docker、Kubernetes可以快速實現叢集部署。

6.有效監控
Spring Boot集成了非常高效的監控框架,只要簡單引入對spring-boot-start-actuator的依賴,就可以實現對服務效能的監控。結合Spring Cloud就可以實現對整個微服務鏈路的全天候監控。

> 彩蛋,作者將藉助51CTO訂閱專欄平臺,上線專欄《精講Spring Boot技術》,感興趣的學員可新增小助手微信:cto51boke,提前加入專欄興趣群,讓我看到你們的學習熱情,一起加速專欄上線!!!

本課程你能學到什麼

課程中使用Spring Boot相對較新版本2.0.4.RELEASE,文中的例子均是小編在工作中用到的場景、或遇到的問題。目的是讓Spring Boot學習者快速上手,同時學紮實Spring Boot是向Spring Cloud邁進的必經之路。課程主要非常三部分:基礎篇、進階篇和專案篇

基礎篇(1-15):主要介紹Spring Boot中常用的功能和要點,在這個階段裡將講到Spring Boot的環境搭建、日誌框架logback的使用、獲取properties配置檔案的常用方式、模板引擎Thymeleaf、跨域訪問的實現、HikariCP資料來源的使用等,學完這十五篇能達到使用Spring Boot快速搭建專案,實現基本的CURD功能。

進階篇(16-22):這個階段主要講解Spring Boot整合一些現在網際網路公司常用到的中介軟體,包括Spring Boot整合Redis、Spring Boot實現任務排程處理、Spring Boot如何使用訊息中介軟體ActiveMQ實現訊息佇列處理、如何使用全文檢索Elasticsearch、流程引擎Activiti、規則引擎Drools等。

專案篇(23-26):主要使用一個小專案把前22講說到的技術串起來,目的讓大家對這些技術的使用場景有一個全域性概念。什麼情況場景到這個框架、什麼場景用到那個框架。認真的學完,並加以思考;達到舉一反三,觸類旁通。差不多就可以正在的開發Spring Boot專案了。一句話:高徒出名師。

你是否適合學習本課程

1.有Java語言開發基礎,對Spring、Maven有一定了解的在校學生、初學者或者自學者
2.對新技術Spring Boot感興趣的開發者
3.有傳統行業IT專案經驗,以後想往Spring Cloud微服務發展的工作人員
4.想對Spring Boot有一個整體瞭解的相關人員
開發環境及用到的相關技術

開發環境:

1.開發工具:Eclipse(對IDEA熟悉的人員可以自行使用IDEA)
2.使用JDK 的版本為1.8
3.使用Spring Boot的版本為2.0.4.RELEASE

  1. 使用的Maven版本為3.5.0
    其中Spring Boot 2.0.4版本要求JDK最低版本為1.8,所以不能隨意改變;但是Eclipse和Maven的版本可以選擇高一點或者低稍許的版本都沒問題,不要差太遠即可。

用到的相關技術:

  1. FastJson
  2. Thymeleaf
  3. MyBatis
  4. Redis
  5. Logback
  6. HikariCP
  7. Elasticsearch
  8. Activiti
  9. Drools
  10. Quartz
    在講解過程中可能還會用到其他技術,這裡就不一一列舉了,同時講解中的專案用到以上技術的版本可以自行選擇,不過儘量跟專案中的一致。