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