驚恐!屈雄!為什么說 Java 程序員必須掌握 Spring Boot 村视?

這個問題放在五年以前,還可以存在酒奶,但放到 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海诲,那趕緊點吧繁莹!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市特幔,隨后出現(xiàn)的幾起案子咨演,更是在濱河造成了極大的恐慌,老刑警劉巖蚯斯,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薄风,死亡現(xiàn)場離奇詭異,居然都是意外死亡拍嵌,警方通過查閱死者的電腦和手機遭赂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撰茎,“玉大人,你說我怎么就攤上這事打洼×浜” “怎么了逆粹?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長炫惩。 經(jīng)常有香客問我僻弹,道長,這世上最難降的妖魔是什么他嚷? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任蹋绽,我火速辦了婚禮,結(jié)果婚禮上筋蓖,老公的妹妹穿的比我還像新娘卸耘。我一直安慰自己,他們只是感情好粘咖,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布蚣抗。 她就那樣靜靜地躺著,像睡著了一般瓮下。 火紅的嫁衣襯著肌膚如雪翰铡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天讽坏,我揣著相機與錄音锭魔,去河邊找鬼。 笑死路呜,一個胖子當(dāng)著我的面吹牛迷捧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拣宰,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼党涕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了巡社?” 一聲冷哼從身側(cè)響起膛堤,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晌该,沒想到半個月后肥荔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡朝群,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年燕耿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姜胖。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡誉帅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚜锨,我是刑警寧澤档插,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站亚再,受9級特大地震影響郭膛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氛悬,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一则剃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧如捅,春花似錦棍现、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烈涮,卻和暖如春朴肺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坚洽。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工戈稿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人讶舰。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓鞍盗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親跳昼。 傳聞我的和親對象是個殘疾皇子般甲,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容