引言
Spring Boot 是 Spring 框架的腳手架,它存在的目的就是為了快速開(kāi)發(fā) Spring 框架而誕生的。如何理解 Spring Boot 和 Spring 呢?
如果將 Spring 比喻成農(nóng)民拿鐮刀手動(dòng)割草,那么 Spring Boot 就相當(dāng)于專(zhuān)業(yè)人員駕駛著割草機(jī),自動(dòng)割草。而之前的 Servlet 就是普通人,在田地里直接用手撥草…
所以說(shuō),在這個(gè)時(shí)代,Spring Boot 已經(jīng)成為了一個(gè) Java 程序員主流使用的開(kāi)發(fā)框架了,它讓我們從 Spring 跨越到了 Spring Boot 時(shí)代,說(shuō)是一個(gè)質(zhì)的飛躍,并不夸張。
但是,我們應(yīng)該明確:Spring Boot 是基于 Spring 框架的框架,說(shuō)到底,最核心的還是 Spring,只不過(guò),Spring Boot 框架為開(kāi)發(fā)人員帶來(lái)了更快捷的操作。
第一個(gè) Spring Boot 項(xiàng)目
1. 創(chuàng)建一個(gè) spring boot 項(xiàng)目
第一步
我用的是社區(qū)版的 IDEA,所以創(chuàng)建一個(gè)此項(xiàng)目,就需要用到 【Spring Assistant】這樣的插件。
如果你的 IDEA 版本搜尋不到這樣的插件的話,可以重新下載一個(gè) 2020 版本的,因?yàn)楸救酥熬褪鞘褂玫?2022 版本的社區(qū)版 IDEA,結(jié)果發(fā)行沒(méi)有上面的插件。
下面的 Custom 可以用來(lái)配置國(guó)內(nèi)源,但是一般我們不用,點(diǎn)擊 Default 就好,除非你的網(wǎng)速真的很差,否則我認(rèn)為還是少折騰的好,因?yàn)閲?guó)內(nèi)源提供的版本比較老。
第二步
日常我們學(xué)習(xí)階段,下面只需要將 Java 版本更改即可,一般推薦使用 Java 8.
其他的設(shè)置,日后在工作中,可以根據(jù)項(xiàng)目要求來(lái)定義。
第三步
選擇 Spring Boot 版本號(hào),選擇需要的依賴(lài)。
Spring Boot 版本號(hào):我們應(yīng)該選擇一個(gè)穩(wěn)定版的,版本后面不帶括號(hào)的。
Spring Boot DevTools:表示我們開(kāi)發(fā) Spring Boot 項(xiàng)目的工具包。
Lombook:后面我們會(huì)詳細(xì)介紹。
Spring Web:表示我們創(chuàng)建的項(xiàng)目可以基于 HTTP 協(xié)議,成為一個(gè) Web 項(xiàng)目,也就是里面內(nèi)置了 Tomcat,供前后端交互。
第四步
創(chuàng)建項(xiàng)目名稱(chēng),并規(guī)定保存路徑。
2. 驗(yàn)證
第一步
當(dāng)創(chuàng)建好了項(xiàng)目,進(jìn)入 IDEA 主界面的時(shí)候,第一次進(jìn)來(lái)的時(shí)候,加載好的速度會(huì)很慢,因?yàn)楫?dāng)前的 Spring Boot 框架之前并沒(méi)有存放在本地倉(cāng)庫(kù)中。
當(dāng)出現(xiàn)下圖的一個(gè)標(biāo)志性的類(lèi) " DemoApplication " ,它是一個(gè)啟動(dòng)類(lèi),當(dāng)我們發(fā)現(xiàn)它的圖標(biāo)是一個(gè) " C ",并且上面有個(gè)三角符號(hào),說(shuō)明這個(gè)類(lèi)沒(méi)問(wèn)題了。
之后,我們打開(kāi)這個(gè)類(lèi),什么代碼也不要寫(xiě)入,直接啟動(dòng),如果打印出現(xiàn)下面的一些日志,就表示項(xiàng)目創(chuàng)建無(wú)誤了。
第二步
如果在第一步很慢的話,我們就要配置國(guó)內(nèi)源,以后的項(xiàng)目也應(yīng)該配置國(guó)內(nèi)源。
我們一開(kāi)始創(chuàng)建 Spring Boot 項(xiàng)目的時(shí)候,沒(méi)有配置國(guó)內(nèi)源,是因?yàn)椋抢飮?guó)內(nèi)源的版本太靠后。
但是,這里需要配置國(guó)內(nèi)源,是因?yàn)?maven 需要國(guó)內(nèi)源來(lái)下載一些依賴(lài),并自動(dòng)放入 " pom.xml " 這個(gè)文件中,如果我們不配置,一旦依賴(lài)下載超時(shí)之后,就會(huì)導(dǎo)致在后續(xù)的使用中,一些 maven 提供的包我們用不了。
我需要事先聲明,配置國(guó)內(nèi)源的時(shí)候,應(yīng)在網(wǎng)絡(luò)良好的情況下配置,否則在后續(xù)運(yùn)行 spring 項(xiàng)目的過(guò)程中,可能會(huì)出現(xiàn)奇奇怪怪的異常。
如果有小伙伴需要 " settings.xml " 文件,可以去我上一篇【Spring 博客】找一下,那里有文件的整個(gè)內(nèi)容,以及鏡像說(shuō)明。
3. 寫(xiě)一個(gè) hello world
第一步
創(chuàng)建一個(gè) " UserController " 類(lèi),寫(xiě)入下面代碼:
@Controller
public class UserController {
@RequestMapping("/hello") //設(shè)置路由地址
@ResponseBody // 返回 HTTP響應(yīng)數(shù)據(jù)
public String hello() {
return " hello world ";
}
}
解析代碼
(1) " @RequestMapping " 這個(gè)注解就相當(dāng)于 Servlet 代碼中的 " WebServlet ",它是用來(lái)告訴前端,以什么樣的 " URL " 來(lái)發(fā)送 HTTP 請(qǐng)求的,只不過(guò)前者是加在方法上,后者是加在類(lèi)上的。此外,這里的路由地址,統(tǒng)一為小寫(xiě),防止后續(xù)前端訪問(wèn)數(shù)據(jù),發(fā)生出錯(cuò)的情況。
(2) " @ResponseBody " 表示返回的是一個(gè)非靜態(tài)的頁(yè)面,只返回給前端 HTTP 響應(yīng)中正文的數(shù)據(jù),也就是說(shuō),這個(gè)數(shù)據(jù)是未經(jīng)過(guò) HTML 處理的。
(3) 在這里,類(lèi)上面只能加上 " @Controller ",而不能加上其他的四大類(lèi)注解。因?yàn)椋?" @Controller " 的功能就是用來(lái)與前端交互的,其他類(lèi)注解并沒(méi)有這個(gè)功能。
第二步
寫(xiě)好代碼后,啟動(dòng) " DemoApplication " 類(lèi),如果我們看到 IDEA 的打印日志,像我剛剛說(shuō)的那樣,沒(méi)有報(bào)錯(cuò),我們就可以利用瀏覽器發(fā)送一個(gè) HTTP 請(qǐng)求。
展示結(jié)果:
抓包結(jié)果:
注意事項(xiàng)
一般來(lái)說(shuō),我們創(chuàng)建一個(gè)實(shí)現(xiàn)我們的業(yè)務(wù)代碼類(lèi),都會(huì)放在與 " DemoApplication " 類(lèi)平級(jí)的目錄下,也就是下面的 " demo " 包下。
然而,這里的 Spring Boot 有一個(gè)隱含的約定:
我們創(chuàng)建的類(lèi)所在的目錄,不能比 " DemoApplication " 啟動(dòng)類(lèi)所在的目錄高,也就是說(shuō),當(dāng)我們創(chuàng)建的類(lèi)放在了 " example " 或者 " com " 下,就會(huì)導(dǎo)致前端訪問(wèn)失敗,如果放在了 " demo " 或 " demo1 " 下,就不會(huì)失敗。
學(xué)過(guò) Spring 初級(jí)框架的小伙伴,都應(yīng)該知道一個(gè)配置文件 " sping-config.xml ",它就是用來(lái)指定一個(gè)根路徑,以便于框架從根路徑下,找尋你實(shí)現(xiàn)的類(lèi),如果你創(chuàng)建的類(lèi),在根路徑之上,那么就會(huì)出錯(cuò)。
而在這里的 Spring Boot 其實(shí)是一樣的,它的思想是 " 約定大于配置 ",實(shí)際上,用 Spring Boot 框架,它并不需要我們?cè)O(shè)置配置文件,但是我們應(yīng)該知道創(chuàng)建一個(gè)類(lèi)的路徑,是不能隨意放的,這是一種規(guī)范!
而在后面的學(xué)習(xí)中,很多依賴(lài)、文件并不需要我們手動(dòng)引入,都是框架為我們實(shí)現(xiàn)好了的,但是我們也要遵循當(dāng)前框架的規(guī)則,只有掌握了規(guī)則,環(huán)境才不會(huì)出錯(cuò)。
網(wǎng)頁(yè)創(chuàng)建一個(gè) Spring Boot 項(xiàng)目
網(wǎng)頁(yè)地址:
https://start.spring.io/
通過(guò)網(wǎng)頁(yè)創(chuàng)建一個(gè) Spring Boot 項(xiàng)目的時(shí)候,它可供我們選擇的選項(xiàng),與用 IDEA 創(chuàng)建的時(shí)候是一樣的,如下圖所示:
當(dāng)我們點(diǎn)擊生成的時(shí)候,瀏覽器就會(huì)下載一個(gè) " zip " 這樣的壓縮包,下載到本地,默認(rèn)名稱(chēng)就是 " demo "。之后,我們可以為其解壓縮成一個(gè)文件夾的形式,解壓后的 " demo " 文件夾,就和我們平時(shí)創(chuàng)建的一個(gè)項(xiàng)目是一樣的,之后,我們利用 IDEA 打開(kāi),就可以進(jìn)行后續(xù)的操作了。
Spring Boot 的優(yōu)點(diǎn)
1. 當(dāng)我們創(chuàng)建一個(gè) maven 項(xiàng)目的時(shí)候,不需要自己手動(dòng)去 maven 倉(cāng)庫(kù)去搜索依賴(lài)。我們只需要選中 Spring Boot 框架提供的勾選框后,它就會(huì)自動(dòng)幫我們實(shí)現(xiàn)好,并自動(dòng)添加到 " pom.xml " 文件中。也就是說(shuō),我們寫(xiě)代碼可以完全脫離 xml 文件,但是一個(gè) maven 項(xiàng)目依然需要它。
2. 內(nèi)置了運(yùn)行容器,無(wú)需配置 Tomcat 等 Web 容器,直接運(yùn)行和部署程序。之前,我們創(chuàng)建 Servlet 或 Spring 項(xiàng)目的時(shí)候,使用 Tomcat 時(shí),還需要手動(dòng)添加依賴(lài),并感知它的運(yùn)行。現(xiàn)在,Spring Boot 直接內(nèi)置了 Tomcat,并自動(dòng)為我們的項(xiàng)目適配一個(gè)合適的 Tomcat 版本,這就很人性化了。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-492368.html
3. 支持持更多的監(jiān)控指標(biāo),可以更好地了解項(xiàng)目的運(yùn)行情況。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-492368.html
到了這里,關(guān)于創(chuàng)建并運(yùn)行一個(gè) Spring Boot 項(xiàng)目的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!