這個問題放在五年以前,還可以存在酒奶,但放到 2021 年蚁孔,這個問題已經(jīng)沒有存在的價值了,因為所有的 Java 程序員都必須得掌握 Spring Boot 已經(jīng)變成了一條定律惋嚎,就像勾股定律一樣杠氢。
首先,我們要知道“什么是 Spring Boot”另伍。
Spring Boot 是由 Pivotal 團隊提供的一個全新框架鼻百,其設(shè)計目的是用來簡化 Spring 應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置摆尝,從而使開發(fā)人員不再需要定義樣板化的配置温艇。
說句人話就是,Spring Boot 不是什么新的框架堕汞,它默認配置了很多框架的使用方式勺爱,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架讯检。
其次邻寿,我們要知道“使用 Spring Boot有什么好處”蝎土。
其實就是簡單、快速绣否、方便誊涯!在沒有 Spring Boot 之前,我們要搭建一個 Web 項目蒜撮,通常要這么做:
配置 web.xml暴构,加載 Spring 和 SpringMVC
配置數(shù)據(jù)庫鏈接、配置 Spring 事務(wù)
配置日志文件
部署 Tomcat 運行 Web 項目
有了 Spring Boot 之后呢段磨,再也不用折騰這些了取逾,僅僅只需要非常少的幾個配置就可以快速地搭建一套 Web 項目!使用 Spring Boot 有多爽苹支,用下面這幅圖來表述下砾隅。
那接下來,我們就直接上手一個例子來體驗一下债蜜。
01晴埂、使用 Spring Initlallzr 創(chuàng)建 Spring Boot 項目
創(chuàng)建一個 Spring Boot 項目非常簡單,通過 Spring Initlallzr 就可以了寻定。
第一個選項一般選擇 Maven(Java 后端項目首選)儒洛,Gradle 在安卓項目中用的比較多。
第二個選項一般選擇 Java狼速。
第三個選項默認為 2.4.3琅锻,Spring Boot 目前最穩(wěn)定的版本。
第四個選項填上項目的路徑和名稱向胡。
第五個選項恼蓬,我們選擇 Spring Web 和 Spring Boot Actuator,表明該項目是一個 Web 項目僵芹;Actuator 是 Spring Boot 提供的對應(yīng)用系統(tǒng)的自省和監(jiān)控的集成功能滚秩,可以查看應(yīng)用配置的詳細信息,例如自動化配置信息淮捆、創(chuàng)建的 Spring beans 以及一些環(huán)境屬性等。
選項選擇完后本股,就可以點擊【Generate】按鈕生成一個初始化的 Spring Boot 項目了攀痊。生成的是一個壓縮包,導(dǎo)入到 IDE 的時候需要先解壓拄显。
02苟径、把 Spring Boot 項目導(dǎo)入 IDEA
PS:導(dǎo)入的過程就省略了,請選擇 Maven 就對了躬审。
等待 Maven 把所有的依賴包下載完棘街。
項目的目錄結(jié)構(gòu)圖如下所示蟆盐。
HelloSpringBootApplication 為項目的入口,帶有 main() 方法遭殉。我們知道石挂,傳統(tǒng)的 Web 項目通常需要放到 Tomcat 等容器下面啟動運行,而 main() 方法則預(yù)示著該項目可以作為一個 jar 包直接運行——因為 Spring Boot 已經(jīng)內(nèi)置了 Tomcat险污。
大家一定對 @SpringBootApplication 注解非常好奇痹愚,它的源碼大致如下:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
從這些注解中,我們大致可以窺探出蛔糯,Spring Boot 項目使用了大量的注解取代了以往繁瑣的 xml 配置拯腮。
03、編輯 Spring Boot 項目來看下面這段代碼蚁飒。
@SpringBootApplication
@RestController
public class HelloSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringBootApplication.class, args);
}
@RequestMapping("hello")
public String hello() {
return "Hello World";
}
}
@RestController 注解相當(dāng)于 @ResponseBody + @Controller动壤,意味著請求返回的對象可以直接以 JSON 的格式回顯。
hello() 方法非常簡單淮逻,返回一個字符串“Hello World”琼懊。@RequestMapping 表明這個方法是一個請求映射脂矫。
04疾就、運行 Spring Boot 項目
接下來,我們直接運行 HelloSpringBootApplication 類泪姨,這樣一個 Spring Boot 項目就啟動成功了凸椿。
默認端口為 8080削祈。
這時候,可以直接在 IDEA 的 Terminal 面板中測試該項目是否啟動成功脑漫。
命令行為 curl http://localhost:8080/hello髓抑。
之所以不需要項目路徑 helloSpringBoot,是因為默認啟動的時候相當(dāng)于是一個 ROOT 級別的优幸,所以不需要根目錄吨拍。
curl 是一個常用的命令行工具,用來請求 Web 服務(wù)器网杆。它的名字就是客戶端(client)和 URL 的合體羹饰。curl 的功能非常強大,命令行參數(shù)多達幾十種碳却。如果運用熟練的話队秩,完全可以取代 Postman。
05昼浦、jar 形式運行 Spring Boot 項目
打開 pom.xml馍资,我們可以看到如下內(nèi)容:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
這意味著我們可以通過 maven 命令 mvn clean package 將 Spring Boot 項目打包成 jar 文件。
也可以加上參數(shù)用于跳過打包時候的測試:mvn clean package -Dmaven.test.skip
稍等片刻关噪,就可以在 target 目錄下看到對應(yīng)的 jar 包鸟蟹。該 jar 包比起傳統(tǒng)的 war 包更具有優(yōu)勢乌妙,因為不需要再單獨開一個容器來跑項目了,Spring Boot 內(nèi)置過了建钥。原生的 jar 文件(.jar.original)只有不到 3 kb藤韵,非常小,因為沒幾行代碼锦针,但打包后 .jar 文件有 19 M荠察,這說明 Spring Boot 幫我們做了很多肉眼看不到的工作。
直接使用 java -jar helloSpringBoot-0.0.1-SNAPSHOT.jar 命令運行該 jar 包奈搜,同樣可以看到
啟動信息悉盆。
這次,我們使用瀏覽器來訪問一下馋吗。
也是 OK 的焕盟,這說明我們的第一個 Spring Boot 程序跑起來了。
怎么樣宏粤?使用 Spring Boot 可以非常方便脚翘、快速搭建項目,使我們不用關(guān)心框架之間的兼容性绍哎,適用版本等各種問題来农,我們想使用任何東西,僅僅添加一個配置就可以崇堰,所以使用 Spring Boot 非常適合構(gòu)建微服務(wù)沃于。
如果你是一名 Java 程序員,還沒有學(xué)習(xí) Spring Boot海诲,那趕緊點吧繁莹!