狂神說SpringBoot01:Hello,World!

SpringBoot簡介

回顧:什么是Spring

Spring是一個(gè)開源框架,2003 年興起的一個(gè)輕量級(jí)的Java 開發(fā)框架彼哼,作者:Rod Johnson 。

Spring是為了解決企業(yè)級(jí)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的湘今,簡化開發(fā)敢朱。

Spring是如何簡化Java開發(fā)的

為了降低Java開發(fā)的復(fù)雜性,Spring采用了以下4種關(guān)鍵策略:

1摩瞎、基于POJO的輕量級(jí)和最小侵入性編程拴签,所有東西都是bean;

2旗们、通過IOC蚓哩,依賴注入(DI)和面向接口實(shí)現(xiàn)松耦合;

3上渴、基于切面(AOP)和慣例進(jìn)行聲明式編程岸梨;

4、通過切面和模版減少樣式代碼驰贷,RedisTemplate盛嘿,xxxTemplate;

什么是SpringBoot

學(xué)過javaweb的同學(xué)就知道括袒,開發(fā)一個(gè)web應(yīng)用次兆,從最初開始接觸Servlet結(jié)合Tomcat, 跑出一個(gè)Hello Wolrld程序,是要經(jīng)歷特別多的步驟锹锰; 后來就用了框架Struts芥炭,再后來是SpringMVC漓库,到了現(xiàn)在的SpringBoot,過一兩年又會(huì)有其他web框架出現(xiàn)园蝠;你們有經(jīng)歷過框架不斷的演進(jìn)渺蒿,然后自己開發(fā)項(xiàng)目所有的技術(shù)也再不斷的變化、改造嗎彪薛?建議都可以去經(jīng)歷一遍茂装;

言歸正傳,什么是SpringBoot呢善延,就是一個(gè)javaweb的開發(fā)框架少态,和SpringMVC類似,對(duì)比其他javaweb框架的好處易遣,官方說是簡化開發(fā)彼妻,約定大于配置, you can "just run"豆茫,能迅速的開發(fā)web應(yīng)用侨歉,幾行代碼開發(fā)一個(gè)http接口。

所有的技術(shù)框架的發(fā)展似乎都遵循了一條主線規(guī)律:從一個(gè)復(fù)雜應(yīng)用場景 衍生 一種規(guī)范框架揩魂,人們只需要進(jìn)行各種配置而不需要自己去實(shí)現(xiàn)它幽邓,這時(shí)候強(qiáng)大的配置功能成了優(yōu)點(diǎn);發(fā)展到一定程度之后肤京,人們根據(jù)實(shí)際生產(chǎn)應(yīng)用情況颊艳,選取其中實(shí)用功能和設(shè)計(jì)精華茅特,重構(gòu)出一些輕量級(jí)的框架忘分;之后為了提高開發(fā)效率,嫌棄原先的各類配置過于麻煩白修,于是開始提倡“約定大于配置”妒峦,進(jìn)而衍生出一些一站式的解決方案。

是的這就是Java企業(yè)級(jí)應(yīng)用->J2EE->spring->springboot的過程兵睛。

隨著 Spring 不斷的發(fā)展肯骇,涉及的領(lǐng)域越來越多,項(xiàng)目整合開發(fā)需要配合各種各樣的文件祖很,慢慢變得不那么易用簡單笛丙,違背了最初的理念,甚至人稱配置地獄假颇。Spring Boot 正是在這樣的一個(gè)背景下被抽象出來的開發(fā)框架胚鸯,目的為了讓大家更容易的使用 Spring 、更容易的集成各種常用的中間件笨鸡、開源軟件姜钳;

Spring Boot 基于 Spring 開發(fā)坦冠,Spirng Boot 本身并不提供 Spring 框架的核心特性以及擴(kuò)展功能,只是用于快速哥桥、敏捷地開發(fā)新一代基于 Spring 框架的應(yīng)用程序辙浑。也就是說,它并不是用來替代 Spring 的解決方案拟糕,而是和 Spring 框架緊密結(jié)合用于提升 Spring 開發(fā)者體驗(yàn)的工具判呕。Spring Boot 以約定大于配置的核心思想,默認(rèn)幫我們進(jìn)行了很多設(shè)置送滞,多數(shù) Spring Boot 應(yīng)用只需要很少的 Spring 配置佛玄。同時(shí)它集成了大量常用的第三方庫配置(例如 Redis、MongoDB累澡、Jpa梦抢、RabbitMQ、Quartz 等等)愧哟,Spring Boot 應(yīng)用中這些第三方庫幾乎可以零配置的開箱即用奥吩。

簡單來說就是SpringBoot其實(shí)不是什么新的框架,它默認(rèn)配置了很多框架的使用方式蕊梧,就像maven整合了所有的jar包霞赫,spring boot整合了所有的框架 。

Spring Boot 出生名門肥矢,從一開始就站在一個(gè)比較高的起點(diǎn)端衰,又經(jīng)過這幾年的發(fā)展,生態(tài)足夠完善甘改,Spring Boot 已經(jīng)當(dāng)之無愧成為 Java 領(lǐng)域最熱門的技術(shù)旅东。

Spring Boot的主要優(yōu)點(diǎn):

  • 為所有Spring開發(fā)者更快的入門
  • 開箱即用,提供各種默認(rèn)配置來簡化項(xiàng)目配置
  • 內(nèi)嵌式容器簡化Web項(xiàng)目
  • 沒有冗余代碼生成和XML配置的要求

HelloWorld

準(zhǔn)備工作

我們將學(xué)習(xí)如何快速的創(chuàng)建一個(gè)Spring Boot應(yīng)用十艾,并且實(shí)現(xiàn)一個(gè)簡單的Http請(qǐng)求處理抵代。通過這個(gè)例子對(duì)Spring Boot有一個(gè)初步的了解,并體驗(yàn)其結(jié)構(gòu)簡單忘嫉、開發(fā)快速的特性荤牍。

我的環(huán)境準(zhǔn)備:

  • java version "1.8.0_181"
  • Maven-3.6.1
  • SpringBoot 2.x 最新版

開發(fā)工具:

  • IDEA

創(chuàng)建基礎(chǔ)項(xiàng)目說明

Spring官方提供了非常方便的工具讓我們快速構(gòu)建應(yīng)用 , Spring Initializr: https://start.spring.io/

項(xiàng)目創(chuàng)建方式一:使用Spring Initializr 的 Web頁面創(chuàng)建項(xiàng)目

1、打開 https://start.spring.io/

2庆冕、填寫項(xiàng)目信息

3康吵、點(diǎn)擊”Generate Project“按鈕生成項(xiàng)目;下載此項(xiàng)目

4访递、解壓項(xiàng)目包晦嵌,并用IDEA以Maven項(xiàng)目導(dǎo)入,一路下一步即可,直到項(xiàng)目導(dǎo)入完畢耍铜。

5邑闺、如果是第一次使用,可能速度會(huì)比較慢棕兼,包比較多陡舅、需要耐心等待一切就緒。

項(xiàng)目創(chuàng)建方式二:使用 IDEA 直接創(chuàng)建項(xiàng)目

1伴挚、創(chuàng)建一個(gè)新項(xiàng)目

2、選擇spring initalizr 茎芋, 可以看到默認(rèn)就是去官網(wǎng)的快速構(gòu)建工具那里實(shí)現(xiàn)

3田弥、填寫項(xiàng)目信息

4偷厦、選擇初始化的組件(初學(xué)勾選 Web 即可)

5只泼、填寫項(xiàng)目路徑

6请唱、等待項(xiàng)目構(gòu)建成功

項(xiàng)目結(jié)構(gòu)分析:

通過上面步驟完成了基礎(chǔ)項(xiàng)目的創(chuàng)建。就會(huì)自動(dòng)生成以下文件十绑。

1、程序的主啟動(dòng)類

2晚岭、一個(gè) application.properties 配置文件

3、一個(gè) 測試類

4狂鞋、一個(gè) pom.xml

pom.xml 分析

打開pom.xml骚揍,看看Spring Boot項(xiàng)目的依賴:

<!-- 父依賴 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.5.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <!-- web場景啟動(dòng)器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- springboot單元測試 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <!-- 剔除依賴 -->
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

<build>
    <plugins>
        <!-- 打包插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

編寫HTTP接口

1嘲叔、在主程序的同級(jí)目錄下硫戈,新建一個(gè)controller包下硕,==一定要在同級(jí)目錄下梭姓,否則識(shí)別不到==

2誉尖、在包中新建一個(gè)HelloController類

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "Hello World";
    }
    
}

3铡恕、編寫完畢后没咙,從主程序啟動(dòng)項(xiàng)目祭刚,瀏覽器發(fā)起請(qǐng)求涡驮,看頁面返回捉捅;控制臺(tái)輸出了 Tomcat 訪問的端口號(hào)棒口!

image

簡單幾步无牵,就完成了一個(gè)web接口的開發(fā)茎毁,SpringBoot就是這么簡單。所以我們常用它來建立我們的微服務(wù)項(xiàng)目墙懂!

將項(xiàng)目打成jar包损搬,點(diǎn)擊 maven的 package

image

如果遇到以上錯(cuò)誤场躯,可以配置打包時(shí) 跳過項(xiàng)目運(yùn)行測試用例

<!--
    在工作中,很多情況下我們打包是不想執(zhí)行測試用例的
    可能是測試用例不完事,或是測試用例會(huì)影響數(shù)據(jù)庫數(shù)據(jù)
    跳過測試用例執(zhí)
    -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <!--跳過項(xiàng)目運(yùn)行測試用例-->
        <skipTests>true</skipTests>
    </configuration>
</plugin>

如果打包成功,則會(huì)在target目錄下生成一個(gè) jar 包

image

打成了jar包后,就可以在任何地方運(yùn)行了柒瓣!OK java -jar xxx.jar

彩蛋

如何更改啟動(dòng)時(shí)顯示的字符拼成的字母搂鲫,SpringBoot呢磺平? 也就是 banner 圖案拣挪;

只需一步:到項(xiàng)目下的 resources 目錄下新建一個(gè)banner.txt 即可菠劝。

圖案可以到:https://www.bootschool.net/ascii 這個(gè)網(wǎng)站生成赶诊,然后拷貝到文件中即可甫何!

image

SpringBoot這么簡單的東西背后一定有故事,我們之后去進(jìn)行一波源碼分析巍耗!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末灸蟆,一起剝皮案震驚了整個(gè)濱河市炒考,隨后出現(xiàn)的幾起案子斋枢,更是在濱河造成了極大的恐慌瓤帚,老刑警劉巖戈次,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悬秉,居然都是意外死亡搂捧,警方通過查閱死者的電腦和手機(jī)允跑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人况木,你說我怎么就攤上這事。” “怎么了尸疆?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長症革。 經(jīng)常有香客問我,道長摩疑,這世上最難降的妖魔是什么雷袋? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任瓦灶,我火速辦了婚禮贼陶,結(jié)果婚禮上碉怔,老公的妹妹穿的比我還像新娘桨踪。我一直安慰自己铺峭,他們只是感情好逛薇,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布卧秘。 她就那樣靜靜地躺著,像睡著了一般蚯涮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棒旗,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天餐曹,我揣著相機(jī)與錄音朽合,去河邊找鬼。 笑死箭窜,一個(gè)胖子當(dāng)著我的面吹牛纳猫,可吹牛的內(nèi)容都是我干的块差。 我是一名探鬼主播状蜗,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼捎泻!你這毒婦竟也來了变姨?” 一聲冷哼從身側(cè)響起族扰,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎定欧,沒想到半個(gè)月后渔呵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砍鸠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年扩氢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爷辱。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡录豺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出饭弓,到底是詐尸還是另有隱情双饥,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布弟断,位于F島的核電站咏花,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜昏翰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一苍匆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棚菊,春花似錦浸踩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至球订,卻和暖如春后裸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冒滩。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浪谴,地道東北人开睡。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像苟耻,于是被迫代替她去往敵國和親篇恒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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