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

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

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

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

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