Spring Boot 是由 Pivotal 團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新 Spring 應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。該框架使用了特定的方式來(lái)進(jìn)行配置,從而使開(kāi)發(fā)人員不再需要定義樣板化的配置。我這里會(huì)分享一些學(xué)習(xí)Spring Boot的方法和干貨,包括基礎(chǔ)到進(jìn)階,按照本文的學(xué)習(xí)路線將會(huì)事半功倍,避免大家走了彎路導(dǎo)致浪費(fèi)了大量時(shí)間,詳見(jiàn)下文。
一. Spring Boot 是什么
我們剛開(kāi)始學(xué)習(xí) JavaWeb 的時(shí)候,使用 Servlet/JSP 做開(kāi)發(fā),一個(gè)接口搞一個(gè) Servlet ,很頭大,后來(lái)我們通過(guò)隱藏域或者反射等方式,可以減少 Servlet 的創(chuàng)建,但是依然不方便。再后來(lái),我們引入 Struts2/SpringMVC 這一類的框架,來(lái)簡(jiǎn)化我們的開(kāi)發(fā) ,和 Servlet/JSP 相比,引入框架之后,生產(chǎn)力確實(shí)提高了不少,但是用久了,又發(fā)現(xiàn)了新的問(wèn)題,即配置繁瑣易出錯(cuò),要做一個(gè)新項(xiàng)目,先搭建環(huán)境,環(huán)境搭建來(lái)搭建去,就是那幾行配置,不同的項(xiàng)目,可能就是包不同,其他大部分的配置都是一樣的。Java 總是被人詬病配置繁瑣代碼量巨大,這就是其中一個(gè)表現(xiàn)。那么怎么辦?Spring Boot 應(yīng)運(yùn)而生,Spring Boot 是 Pivotal 團(tuán)隊(duì)在 2013 年開(kāi)始研發(fā)的一個(gè)基于 Spring 的全新框架,試圖將 Spring 中臃腫的配置進(jìn)行簡(jiǎn)化,使 Java 開(kāi)發(fā)更加輕量與快速,這個(gè)框架非常活躍,官方也非常重視。Spring Boot 主要提供了如下功能:為所有基于 Spring 的 Java 開(kāi)發(fā)提供方便快捷的入門體驗(yàn)。開(kāi)箱即用,有自己自定義的配置就是用自己的,沒(méi)有就使用官方提供的默認(rèn)的。提供了一系列通用的非功能性的功能,例如嵌入式服務(wù)器、安全管理、健康檢測(cè)等。絕對(duì)沒(méi)有代碼生成,也不需要XML配置。Spring Boot 的出現(xiàn)讓 Java 開(kāi)發(fā)又回歸簡(jiǎn)單,因?yàn)榇_確實(shí)實(shí)解決了開(kāi)發(fā)中的痛點(diǎn),因此這個(gè)技術(shù)得到了非常廣泛的使用,大概從 2017 年年初開(kāi)始,Spring Boot 基本上面試必問(wèn),現(xiàn)在流行的 Spring Cloud 微服務(wù)也是基于 Spring Boot,因此,所有的 Java 工程師都有必要掌握好 Spring Boot。從 Spring Boot 誕生的過(guò)程中,我們可以看到:Spring Boot 并非另起爐灶,而是在現(xiàn)有的 Spring 框架的基礎(chǔ)上整出來(lái)的,它把 Spring 中繁瑣的配置進(jìn)行了簡(jiǎn)化。Spring Boot 降低了 Spring 家族的使用門檻,使新手更易上手 Spring 框架。既然 Spring Boot 不是另起爐灶,那么 Spring Boot 學(xué)習(xí)要不要跳過(guò) SSM 呢?聽(tīng)松哥來(lái)分析。二. 要不要跳過(guò) SSM
這是很多人問(wèn)我的一個(gè)問(wèn)題,我的建議是:不要。Spring Boot 基于 Spring,簡(jiǎn)單且容易上手,很多人想當(dāng)然的跳過(guò) SSM 直接上 Spring Boot。但是當(dāng)我們細(xì)究 Spring Boot 中的自動(dòng)化配置、條件注解、Java 配置等東西時(shí),實(shí)在找不出太多新鮮玩意,Java 配置是 Spring3 開(kāi)始提供的,條件注解 也是 Spring 中的東西,很多很多,都是 Spring 中就有的,只不過(guò)這些東西在 Spring Boot 時(shí)代大放異彩。也就是說(shuō),即使你跳過(guò)了 SSM 直接去學(xué)習(xí) Spring Boot,實(shí)際上還是在學(xué)習(xí) Spring 中的東西,那既然這樣,我們還不如坐下來(lái),老老實(shí)實(shí)把 Spring 過(guò)一遍。各個(gè)領(lǐng)域的開(kāi)發(fā)工程師其實(shí)都會(huì)面臨類似的問(wèn)題,學(xué)習(xí)了一些優(yōu)秀的封裝框架之后,還有沒(méi)有必要去學(xué)習(xí)底層?當(dāng)然有必要!因?yàn)榈讓拥臇|西可以讓你深刻的理解你目前用的這個(gè)東西,也能讓你在出問(wèn)題時(shí)快速解決掉問(wèn)題。其實(shí)無(wú)論你想搞什么技術(shù),都要有牢固的基礎(chǔ)知識(shí),這些牢固的基礎(chǔ)知識(shí)就像肥沃的土壤,可以孕育出各種不同技術(shù)方向的牛人,基礎(chǔ)掌握好了,學(xué)什么框架都快。今天你跳過(guò) SSM 直接學(xué)了 Spring Boot,假如有一天 Spring Boot 不行了,Pivotal 團(tuán)隊(duì)又基于 Spring 框架搞了一個(gè)新的框架出來(lái),那你是不是又要去學(xué)一遍?但是如果你一開(kāi)始就掌握了 Spring 的各種用法,無(wú)論基于它搞出來(lái)什么樣的框架,你都能快速上手。更進(jìn)一步,如果你研究透了 Spring 中的 AOP、Ioc/DI,你會(huì)發(fā)現(xiàn)很多框架大同小異,核心思想就是這些東西,那么你在學(xué)習(xí) Spring 之外的框架,就會(huì)容易很多。三. 都要學(xué)哪些?
那么 Spring Boot 學(xué)習(xí)都要學(xué)哪些東西呢?我這里列舉了一個(gè)進(jìn)階路線:最基礎(chǔ)的當(dāng)然是 Spring/SpringMVC 相關(guān)的東西了。搭配各種頁(yè)面模板的使用,例如 Jsp/Thymeleaf/Freemarker/Groovy Templates 等。和各種 SQL 數(shù)據(jù)庫(kù)的整合,以及一些常見(jiàn)的數(shù)據(jù)持久化框架,例如 JdbcTemplate、MyBatis、Jpa 等。和各種 NoSQL 數(shù)據(jù)庫(kù)的整合,例如 Redis、MongoDB、Elasticsearch 等。搭配安全管理相關(guān)的知識(shí)點(diǎn),例如 Spring Security、Shiro 等。緩存的使用,例如 JCache、Ehcache 等。和消息中間件的搭配整合,如 ActiveMQ、RabbitMQ、Kafka 等。數(shù)據(jù)校驗(yàn)/定時(shí)任務(wù)/郵件發(fā)送等。各種監(jiān)控的使用。結(jié)合 WebSocket 的使用。Spring Cloud 中相關(guān)組件。...上面這些只是我列出來(lái)的一些比較常見(jiàn)的技術(shù)點(diǎn),每個(gè)技術(shù)點(diǎn)都還可以延伸出很多其他的東西,大家可以結(jié)合自己的情況,按照順序一個(gè)一個(gè)來(lái)學(xué),這里邊還涉及到很多第三方的框架,例如 Redis、MongoDB、RabbitMQ 等,Spring Boot 的出現(xiàn)只是讓這些組件在和 Spring 家族的產(chǎn)品整合時(shí)變得更加方便,但是并不會(huì)簡(jiǎn)化這些組件原本的用法,所以,該學(xué) Redis、該學(xué) MongoDB、該學(xué) RabbitMQ 等等,還是一個(gè)不能少。以 Redis 為例,學(xué)會(huì)了 Redis,學(xué)會(huì)了 Spring 整合 Redis,再回過(guò)頭來(lái)看 Spring Boot 整合 Redis,那簡(jiǎn)直太 easy 了。當(dāng)然,學(xué)習(xí) Spring Boot 最終我們還是奔著快速開(kāi)發(fā)和微服務(wù)去的,所以,像 Docker、Spring Cloud 等技術(shù),也是需要去了解一下的。四. 學(xué)習(xí)方法
1課程式學(xué)習(xí):
主要多見(jiàn)于大學(xué)生、畢業(yè)找工作去培訓(xùn)學(xué)校或者自己在網(wǎng)絡(luò)課程中學(xué)習(xí)的。課程式學(xué)習(xí)很有必要,能夠獲得穩(wěn)定的知識(shí)結(jié)構(gòu),打下良好的基礎(chǔ)。2.碎片化時(shí)間學(xué)習(xí)
碎片化學(xué)習(xí)主要是利用課余時(shí)間,多見(jiàn)于上班族,課余利用上下班、晚上時(shí)間、周末時(shí)間來(lái)實(shí)現(xiàn)學(xué)習(xí)。3.強(qiáng)化學(xué)習(xí)
這是個(gè)非常行之有效的方法,又可以叫魔鬼式訓(xùn)練、封閉式訓(xùn)練,在集中的時(shí)間內(nèi),人很容易突破自我極限,達(dá)到一種前所未有的高度。4.項(xiàng)目式學(xué)習(xí)
就是項(xiàng)目上的需求,要求你用到 Spring Boot 來(lái)實(shí)現(xiàn)某個(gè)業(yè)務(wù)功能,而且有時(shí)間限制,要求你在某年某月某日完成,沒(méi)辦法,只能硬著頭皮干下去。這種有收益、有目標(biāo)、還動(dòng)力的機(jī)會(huì)確實(shí)是人生中難得的,如果你喜歡這個(gè)目標(biāo),你可以立馬撲上去。5.隨用隨學(xué)
比如項(xiàng)目中用到mql,那么搜索下羅相關(guān)的知識(shí),搭建demo測(cè)試用例,然后在項(xiàng)目中實(shí)踐。哪種方式更為適合,需要根據(jù)各個(gè)人的情況來(lái)看項(xiàng)目評(píng)估如下:有人帶著你學(xué)習(xí)看著你學(xué)習(xí)>自己學(xué)習(xí)項(xiàng)目學(xué)習(xí)>非項(xiàng)目學(xué)習(xí)強(qiáng)化學(xué)習(xí)>非強(qiáng)化學(xué)習(xí)五. 學(xué)習(xí)資源
【入門-基礎(chǔ)】
Spring Boot 快速入門Spring Boot 基礎(chǔ)f="">微服務(wù)構(gòu)建: Spring Boot【入門-緩存】
>SpringBoot 中應(yīng)該怎樣使用 Redisef="">Redis 事務(wù)在 SpringBoot 中的應(yīng)用href="">優(yōu)化 Redis 的使用策略【入門-實(shí)踐】
3分鐘快速搭建Spring Boot開(kāi)發(fā)環(huán)境Spring Boot 最佳實(shí)踐(一)快速入門Spring Boot 最佳實(shí)踐(二)集成Jsp與生產(chǎn)環(huán)境部署Spring Boot 最佳實(shí)踐(三)模板引擎FreeMarker集成Spring Boot 最佳實(shí)踐(四)模板引擎Thymeleaf集成Spring Boot 最佳實(shí)踐(五)Spring Data JPA 操作 MySQL 8【進(jìn)階-Web進(jìn)階】
Spring Boot統(tǒng)一異常處理Spring Boot Web 應(yīng)用性能優(yōu)化基于Spring Boot快速開(kāi)發(fā)RESTful風(fēng)格API接口【進(jìn)階-實(shí)例】
基于Spring Boot實(shí)現(xiàn)圖片上傳/加水印一把梭操作Spring Boot日志框架實(shí)踐Spring Boot 集成 MyBatis和 SQL Server實(shí)踐Spring Boot中使用定時(shí)任務(wù)Spring Boot 一分鐘擁有支付寶支付功能六. 學(xué)完Spring Boot基礎(chǔ)之后如何進(jìn)階提升?
1.springsession實(shí)戰(zhàn)
Spring Session 是Spring家族中的一個(gè)子項(xiàng)目,它提供一組API和實(shí)現(xiàn),用于管理用戶的session信息,它把servlet容器實(shí)現(xiàn)的httpSession替換為spring-session,專注于解決 session管理問(wèn)題,Session信息存儲(chǔ)在Redis中,可簡(jiǎn)單快速且無(wú)縫的集成到我們的應(yīng)用中。2.RabbitMQ
RabbitMQ是流行的開(kāi)源消息隊(duì)列系統(tǒng),用erlang語(yǔ)言開(kāi)發(fā),RabbitMQ是AMQP(高級(jí)消息隊(duì)列協(xié)議)的標(biāo)準(zhǔn)實(shí)現(xiàn)。采用該技術(shù),我們可以實(shí)現(xiàn)異步處理、流量削峰、系統(tǒng)解耦。3.Nginx實(shí)戰(zhàn)應(yīng)用
國(guó)內(nèi)有大量網(wǎng)站使用Nginx,比如:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。由于在日常工作中,我們不可避免地要接觸和使用這樣一款高性能的web服務(wù)器,所以我們非常有必要學(xué)習(xí)和掌握Nginx。4.FastDFS詳解
FastDFS為互聯(lián)網(wǎng)量身定制,簡(jiǎn)單、靈活、高效,采用C語(yǔ)言開(kāi)發(fā),充分考慮了冗余備份、負(fù)載均衡、線性擴(kuò)容等機(jī)制,并注重高可用、高性能等指標(biāo),使用FastDFS很容易搭建一套高性能的文件服務(wù)器集群提供文件上傳、下載等服務(wù)。。我覺(jué)的學(xué)好Spring Boot主要還是得有一個(gè)持續(xù)性學(xué)習(xí)的態(tài)度,然后結(jié)合我上面的從Spring Boot基礎(chǔ)到進(jìn)階,一直堅(jiān)持不懈的學(xué)習(xí)下去,百分百會(huì)精通Spring Boot的!本文分享自華為云社區(qū)《【云駐共創(chuàng)】Spring Boot要如何學(xué)習(xí)?》,作者:黎燃。