需要學(xué)習(xí)一下Spring?
Spring Boot 是由 Pivotal 團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡(jiǎn)化新 Spring 應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置。我這里會(huì)分享一些學(xué)習(xí)Spring Boot的方法和干貨,包括基礎(chǔ)到進(jìn)階,按照本文的學(xué)習(xí)路線將會(huì)事半功倍,避免大家走了彎路導(dǎo)致浪費(fèi)了大量時(shí)間,詳見下文。
一. Spring Boot 是什么
我們剛開始學(xué)習(xí) JavaWeb 的時(shí)候,使用 Servlet/JSP 做開發(fā),一個(gè)接口搞一個(gè) Servlet ,很頭大,后來我們通過隱藏域或者反射等方式,可以減少 Servlet 的創(chuàng)建,但是依然不方便。再后來,我們引入 Struts2/SpringMVC 這一類的框架,來簡(jiǎn)化我們的開發(fā) ,和 Servlet/JSP 相比,引入框架之后,生產(chǎn)力確實(shí)提高了不少,但是用久了,又發(fā)現(xiàn)了新的問題,即配置繁瑣易出錯(cuò),要做一個(gè)新項(xiàng)目,先搭建環(huán)境,環(huán)境搭建來搭建去,就是那幾行配置,不同的項(xiàng)目,可能就是包不同,其他大部分的配置都是一樣的。Java 總是被人詬病配置繁瑣代碼量巨大,這就是其中一個(gè)表現(xiàn)。那么怎么辦?Spring Boot 應(yīng)運(yùn)而生,Spring Boot 是 Pivotal 團(tuán)隊(duì)在 2013 年開始研發(fā)的一個(gè)基于 Spring 的全新框架,試圖將 Spring 中臃腫的配置進(jìn)行簡(jiǎn)化,使 Java 開發(fā)更加輕量與快速,這個(gè)框架非常活躍,官方也非常重視。Spring Boot 主要提供了如下功能:為所有基于 Spring 的 Java 開發(fā)提供方便快捷的入門體驗(yàn)。開箱即用,有自己自定義的配置就是用自己的,沒有就使用官方提供的默認(rèn)的。提供了一系列通用的非功能性的功能,例如嵌入式服務(wù)器、安全管理、健康檢測(cè)等。絕對(duì)沒有代碼生成,也不需要XML配置。Spring Boot 的出現(xiàn)讓 Java 開發(fā)又回歸簡(jiǎn)單,因?yàn)榇_確實(shí)實(shí)解決了開發(fā)中的痛點(diǎn),因此這個(gè)技術(shù)得到了非常廣泛的使用,大概從 2017 年年初開始,Spring Boot 基本上面試必問,現(xiàn)在流行的 Spring Cloud 微服務(wù)也是基于 Spring Boot,因此,所有的 Java 工程師都有必要掌握好 Spring Boot。從 Spring Boot 誕生的過程中,我們可以看到:Spring Boot 并非另起爐灶,而是在現(xiàn)有的 Spring 框架的基礎(chǔ)上整出來的,它把 Spring 中繁瑣的配置進(jìn)行了簡(jiǎn)化。Spring Boot 降低了 Spring 家族的使用門檻,使新手更易上手 Spring 框架。既然 Spring Boot 不是另起爐灶,那么 Spring Boot 學(xué)習(xí)要不要跳過 SSM 呢?聽松哥來分析。二. 要不要跳過 SSM
這是很多人問我的一個(gè)問題,我的建議是:不要。Spring Boot 基于 Spring,簡(jiǎn)單且容易上手,很多人想當(dāng)然的跳過 SSM 直接上 Spring Boot。但是當(dāng)我們細(xì)究 Spring Boot 中的自動(dòng)化配置、條件注解、Java 配置等東西時(shí),實(shí)在找不出太多新鮮玩意,Java 配置是 Spring3 開始提供的,條件注解 也是 Spring 中的東西,很多很多,都是 Spring 中就有的,只不過這些東西在 Spring Boot 時(shí)代大放異彩。也就是說,即使你跳過了 SSM 直接去學(xué)習(xí) Spring Boot,實(shí)際上還是在學(xué)習(xí) Spring 中的東西,那既然這樣,我們還不如坐下來,老老實(shí)實(shí)把 Spring 過一遍。各個(gè)領(lǐng)域的開發(fā)工程師其實(shí)都會(huì)面臨類似的問題,學(xué)習(xí)了一些優(yōu)秀的封裝框架之后,還有沒有必要去學(xué)習(xí)底層?當(dāng)然有必要!因?yàn)榈讓拥臇|西可以讓你深刻的理解你目前用的這個(gè)東西,也能讓你在出問題時(shí)快速解決掉問題。其實(shí)無論你想搞什么技術(shù),都要有牢固的基礎(chǔ)知識(shí),這些牢固的基礎(chǔ)知識(shí)就像肥沃的土壤,可以孕育出各種不同技術(shù)方向的牛人,基礎(chǔ)掌握好了,學(xué)什么框架都快。今天你跳過 SSM 直接學(xué)了 Spring Boot,假如有一天 Spring Boot 不行了,Pivotal 團(tuán)隊(duì)又基于 Spring 框架搞了一個(gè)新的框架出來,那你是不是又要去學(xué)一遍?但是如果你一開始就掌握了 Spring 的各種用法,無論基于它搞出來什么樣的框架,你都能快速上手。更進(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)的東西了。搭配各種頁面模板的使用,例如 Jsp/Thymeleaf/Freemarker/Groovy Templates 等。和各種 SQL 數(shù)據(jù)庫(kù)的整合,以及一些常見的數(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)組件。...上面這些只是我列出來的一些比較常見的技術(shù)點(diǎn),每個(gè)技術(shù)點(diǎn)都還可以延伸出很多其他的東西,大家可以結(jié)合自己的情況,按照順序一個(gè)一個(gè)來學(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,再回過頭來看 Spring Boot 整合 Redis,那簡(jiǎn)直太 easy 了。當(dāng)然,學(xué)習(xí) Spring Boot 最終我們還是奔著快速開發(fā)和微服務(wù)去的,所以,像 Docker、Spring Cloud 等技術(shù),也是需要去了解一下的。四. 學(xué)習(xí)方法
1課程式學(xué)習(xí):
主要多見于大學(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í)間,多見于上班族,課余利用上下班、晚上時(shí)間、周末時(shí)間來實(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 來實(shí)現(xiàn)某個(gè)業(yè)務(wù)功能,而且有時(shí)間限制,要求你在某年某月某日完成,沒辦法,只能硬著頭皮干下去。這種有收益、有目標(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è)人的情況來看項(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開發(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快速開發(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管理問題,Session信息存儲(chǔ)在Redis中,可簡(jiǎn)單快速且無縫的集成到我們的應(yīng)用中。2.RabbitMQ
RabbitMQ是流行的開源消息隊(duì)列系統(tǒng),用erlang語言開發(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語言開發(fā),充分考慮了冗余備份、負(fù)載均衡、線性擴(kuò)容等機(jī)制,并注重高可用、高性能等指標(biāo),使用FastDFS很容易搭建一套高性能的文件服務(wù)器集群提供文件上傳、下載等服務(wù)。。我覺的學(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í)?》,作者:黎燃。