精講Spring Boot—— 入門+進階+實例
Spring Boot到底是什么
在了解Spring Boot之前應(yīng)該先了解下Spring,因為Spring Boot的核心是基于Spring構(gòu)建的。Spring是由Rod Johnson在2002年創(chuàng)建的一個開源框架,Spring在創(chuàng)建到現(xiàn)在一直處于飛速發(fā)展之中。目前已經(jīng)成為J2EE開發(fā)中的事實標準。但是隨著IT技術(shù)的飛速發(fā)展,及IT項目變得越來越復(fù)雜。如果學(xué)習(xí)過Spring就知道Spring非常依賴xml文件進行配置,有時一個項目就有幾十個xml配置文件,這些繁瑣的配置、以及Spring整合第三方框架的配置問題。經(jīng)常導(dǎo)致開發(fā)效率低下,一不小心就出現(xiàn)丟三拉四;有時一不留神就導(dǎo)致發(fā)版失敗,給公司造成經(jīng)濟損失。
Spring Boot是由Pivotal團隊打造的,并在2014年發(fā)布的一個全新框架,其設(shè)計目標就是用來簡化Spring應(yīng)用的搭建、開發(fā)及部署。Spring Boot采用了特定的方式進行配置,從而達到使開發(fā)人員不在需要配置繁瑣的xml文件。簡單的說其實Spring Boot并不是什么新的框架,就是摒棄了xml的配置方式,使用了一種新的配置方式;然后在maven中使用starter的方式整合了很多第三方框架,同時提供了很多默認的配置參數(shù)。
Spring Boot官網(wǎng)有如【圖1】一段話:
【圖1】
這段話這段話跟我上面的解釋大同小異。
Spring Boot為啥不學(xué)不行
Spring Boot在短短四年就已經(jīng)由1.0發(fā)展到2.0了;而且就這短短四年就已經(jīng)紅遍神州大地。無論小公司,還是大企業(yè),都在使用。
1、Spring Boot能干啥
打開Spring官網(wǎng)(https://spring.io/ ),映入我們眼簾的是如下一張圖【圖2】:

【圖2】
看圖中框住的那塊知道,Spring官方對Spring Boot的定位是Build Anything,意思就是Spring Boot可以構(gòu)建任何東西。Spring Boot旨在快速、高效,使用最少的配置構(gòu)建Java應(yīng)用。學(xué)完了Spring Boot,還有更高級的Spring Cloud和Spring Cloud Data Flow。
Spring Cloud的定位是Coordinate Anything (協(xié)調(diào)任何東西)
Spring Cloud Data Flow的定位是Connect Everything (連接任何東西)
仔細斟酌一下Spring Cloud和Spring Cloud Data Flow,發(fā)現(xiàn)Cloud和Data 都跟現(xiàn)在最火的技術(shù)關(guān)聯(lián)在一起,Cloud對應(yīng)云,Data對應(yīng)數(shù)據(jù)。而Spring Cloud和Spring Cloud Data Flow有基于Spring Boot,所以Spring Boot必須先學(xué)。
2、企業(yè)招聘對Spring Boot的要求及Spring Boot的百度搜索指數(shù)
打開國內(nèi)比較知名的招聘網(wǎng)站,例如在獵聘網(wǎng)搜索一下,可以發(fā)現(xiàn)很多Java相關(guān)的職位都對Spring Boot技術(shù)有所要求。如下【圖3】這個Oralce公司的招聘職位,在招聘的職位描述里就對Spring Boot有要求。

【圖3】
Spring Boot嫣然已經(jīng)成為Java程序員打怪升級的必備技能。就不說Spring Boot有多重要了。
再看下Spring Boot的這個關(guān)鍵字的百度搜索指數(shù)(http://index.baidu.com),Spring Boot從2014年推出到現(xiàn)在,Spring Boot在百度的搜索指數(shù)一直處于穩(wěn)步增長的狀態(tài)中【圖4】。說明程序員或者公司對Spring Boot關(guān)注度非常高。

【圖4】
3、Spring Boot的好處
使用了Spring Boot后,能給開發(fā)人員帶來哪些好處?能給運維人員帶來哪些方便?甚至說能給公司帶來哪些經(jīng)濟效益?看圖【圖5】說話:

【圖5】
1.基于Spring
Spring Boot基于Spring,所以Spring有的優(yōu)點Spring Boot也有,不需要開發(fā)人員去學(xué)習(xí)一個全新的框架,學(xué)習(xí)門檻相對降低。
2.快速編碼
Spring Boot的依賴包都是基于maven的pom文件提供的,而Spring Boot本身就集成了特別多的第三方框架。以前開發(fā)Spring應(yīng)用時,需要用到的第三方框架的庫都需要開發(fā)人員一個一個去尋找;現(xiàn)在不需要了,有些可能只需引入一個pom.xml,就能把大量需要用到的第三方庫自動引入到項目中。所以減少了開發(fā)工作量,實現(xiàn)快速編碼。
3.模塊化
基于Spring Boot開發(fā)的項目可以非常簡單的實現(xiàn)模塊化編程,這樣的話可以非常有效的實現(xiàn)項目的分工合作,減少開發(fā)過程中的代碼沖突。模塊化編程還可以非常高效的實現(xiàn)減少代碼的改動量,按需修改模塊,降低生產(chǎn)發(fā)生事故概率。
4.配置簡單
在文章開頭就說了Spring Boot擯棄了繁瑣的xml配置文件,大量的配置文件經(jīng)常是導(dǎo)致生產(chǎn)事故的原因。Spring Boot大量采用yml形式的配置文件再加上相應(yīng)的Annotation,從而大大減少了配置文件的個數(shù),因為以前的Spring應(yīng)用引入一個第三方框架說不定就要添加一個配置文件。舉個例子,比如項目中要引入數(shù)據(jù)庫連接池HikariCP,就需要添加一個關(guān)于HikariCP數(shù)據(jù)庫連接池的配置文件,但是使用了Spring Boot采用HikariCP可能就只需要那么幾行配置就可以了,因為Spring Boot默認集成HikariCP數(shù)據(jù)庫連接池,提供了很多默認的配置。
5.便捷部署
Spring Boot天生就是為了簡單、快捷部署而生。SpringBoot內(nèi)嵌了Tomcat,不需要額外部署應(yīng)用服務(wù)器Tomcat,只需簡單一個Java運行環(huán)境即可,而且啟動的命令也非常簡單:java –jar xxx-release.jar。同時Spring Boot結(jié)合現(xiàn)在非常火的技術(shù) Docker、Kubernetes可以快速實現(xiàn)集群部署。
6.有效監(jiān)控
Spring Boot集成了非常高效的監(jiān)控框架,只要簡單引入對spring-boot-start-actuator的依賴,就可以實現(xiàn)對服務(wù)性能的監(jiān)控。結(jié)合Spring Cloud就可以實現(xiàn)對整個微服務(wù)鏈路的全天候監(jiān)控。