SpringBoot-01-快速入門

SpringBoot

1. 快速入門

什么是Spring

  • 輕量級(jí)的Java開源開發(fā)框架
  • 為了解決企業(yè)級(jí)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的屎勘,簡(jiǎn)化開發(fā)

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

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

  1. 基于POJO的輕量級(jí)和最小侵入性編程;
  2. 通過IOC,依賴注入(DI)和面向接口實(shí)現(xiàn)松耦合;
  3. 基于切面(AOP)和慣例進(jìn)行聲明式編程;
  4. 通過切面和模板減少樣式代碼洲敢;

什么是SpringBoot

? SpringBoot就是一個(gè)JavaWeb的開發(fā)框架,和SpringMVC類似茄蚯,對(duì)比其他框架的好處是簡(jiǎn)化開發(fā)压彭,約定大于配置,能迅速的開發(fā)web應(yīng)用第队,幾行代碼就可以開發(fā)一個(gè)http接口哮塞。

? 所有的技術(shù)框架的發(fā)展都遵循一條主線:一個(gè)復(fù)雜應(yīng)用場(chǎng)景->一種規(guī)范框架(只需配置)->重構(gòu)輕量級(jí)框架->開始提倡"約定大于配置",衍生出一些一站式的解決方案凳谦。

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

? 隨著Spring不斷發(fā)展衡未,項(xiàng)目整合開發(fā)需要配置各種文件尸执,逐漸向“配置地獄”演變。SpringBoot就是在這個(gè)背景下被抽象出來的開發(fā)框架缓醋,目的就是為了更容易的使用Spring如失、更容易的集成各種常用的中間件、開源軟件送粱。

? SpringBoot基于Spring開發(fā)褪贵,本身不提供擴(kuò)展功能,只是用于快速開發(fā)新一代基于Spring框架的應(yīng)用程序抗俄。開箱即用脆丁!

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

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

1.1 微服務(wù)

什么是微服務(wù)动雹?

? 微服務(wù)是一種架構(gòu)風(fēng)格槽卫,它要求我們?cè)陂_發(fā)一個(gè)應(yīng)用的時(shí)候,這個(gè)應(yīng)用構(gòu)建成一系列小服務(wù)的組合胰蝠;可以通過http的方式互通歼培。過去是 單體應(yīng)用架構(gòu)震蒋。

單體應(yīng)用架構(gòu)

? 單體應(yīng)用架構(gòu)(all in one)是指,所有應(yīng)用服務(wù)都封裝在一個(gè)應(yīng)用中躲庄。

? 無論是ERP查剖、CRM,你都把數(shù)據(jù)庫(kù)訪問噪窘,web訪問等功能放在一個(gè)war包內(nèi)笋庄。

  • 這樣的好處是,易于開發(fā)和測(cè)試效览;需要擴(kuò)展時(shí)无切,只需要將war復(fù)制多份,放到多個(gè)服務(wù)器上丐枉,再做個(gè)負(fù)載均衡就可以了哆键。
  • 缺點(diǎn)是,哪怕修改一個(gè)小地方瘦锹,都需要停掉整個(gè)服務(wù)籍嘹,重新打包、部署war包弯院。

微服務(wù)架構(gòu)

? 所謂微服務(wù)架構(gòu)辱士,就是把每個(gè)功能元素獨(dú)立出來。把獨(dú)立出來的功能元素動(dòng)態(tài)組合听绳,即對(duì)功能元素進(jìn)行復(fù)制颂碘,而沒有對(duì)整個(gè)應(yīng)用進(jìn)行復(fù)制。

? 好處有:

  1. 節(jié)約了調(diào)用資源
  2. 每個(gè)功能元素的服務(wù)都是一個(gè)可替換的椅挣、可獨(dú)立升級(jí)的軟件代碼
在這里插入圖片描述

如何構(gòu)建微服務(wù)

? spring為我們帶來了構(gòu)建大型分布式微服務(wù)的全套头岔、全程產(chǎn)品:

  • 構(gòu)建一個(gè)個(gè)功能獨(dú)立的微服務(wù)應(yīng)用單元,可以使用SpringBoot鼠证,可以幫我們快速構(gòu)建一個(gè)應(yīng)用峡竣;
  • 大型分布式網(wǎng)絡(luò)服務(wù)的調(diào)用,這部分由springcloud來完成量九,實(shí)現(xiàn)分布式适掰;
  • 在分布式中間,進(jìn)行流式數(shù)據(jù)計(jì)算荠列、批處理类浪,我們用spring cloud data flow
  • spring為我們想清楚了整個(gè)從開始構(gòu)建應(yīng)用到大型分布式應(yīng)用全流程方案弯予;

1.2 HelloWorld

準(zhǔn)備工作:

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

  • jdk1.8
  • maven-3.6.1
  • springboot 最新版(2.3.2)
  • IDEA

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

官方提供了一個(gè)快速生成的網(wǎng)站:Spring InitializrF莼隆(IDEA集成了這個(gè)網(wǎng)站)

  • 可以在官網(wǎng)直接下載后,導(dǎo)入idea開發(fā)(官網(wǎng)在哪)
  • 直接使用idea創(chuàng)建一個(gè)springboot項(xiàng)目(開發(fā)常用方式)

【目標(biāo)一:使用Spring Initializr頁(yè)面創(chuàng)建項(xiàng)目】

步驟:

  1. 打開Spring Initializr

  2. 填寫項(xiàng)目信息

    在這里插入圖片描述
  1. 點(diǎn)擊“Generate Project”生成項(xiàng)目锈嫩,下載此項(xiàng)目

  2. 解壓項(xiàng)目包受楼,并以Maven項(xiàng)目導(dǎo)入IDEA

  3. 第一次打開垦搬,速度會(huì)比較慢,需要下載的依賴很多

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

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

  • 程序的主程序類
  • 一個(gè)application.properties配置文件
  • 一個(gè)測(cè)試類

pom.xml分析

? 打開pom.xml猴贰,查看Spring Boot項(xiàng)目的依賴,主要有四個(gè)部分:

  • 項(xiàng)目元數(shù)據(jù)信息:包括groupId河狐、artifactId米绕、name、description馋艺;
  • parent:繼承spring-boot-starter-parent的依賴管理栅干,控制版本和打包等內(nèi)容;
  • dependencies:項(xiàng)目依賴捐祠,包含以下內(nèi)容
    • spring-boot-starter-web:實(shí)現(xiàn)HTTP接口(包含SPringMVC)碱鳞,官網(wǎng)對(duì)它的描述:使用SpringMVC構(gòu)建Web應(yīng)用程序的入門者,使用Tomcat作為默認(rèn)嵌入式容器
    • spring-boot-starter-test:用于編寫單元測(cè)試的依賴包
  • build:構(gòu)建配置部分踱蛀。默認(rèn)使用了spring-boot-maven-plugin窿给,配合spring-boot-starter-parent就可以把SpringBoot應(yīng)用打包成JAR來直接運(yùn)行。

編寫HTTP接口

  1. 在主程序的同級(jí)目錄下率拒,新建一個(gè)controller包

    [圖片上傳失敗...(image-d8d839-1600418970462)]

  1. 在包中新建一個(gè)Controller類

     //核心:自動(dòng)裝配 原理1琅荨!猬膨!
    @RestController
    public class HelloController {
    
        //接口:http://localhost:8080/hello
        @RequestMapping("/hello")
        public String hello() {
            //調(diào)用業(yè)務(wù)角撞,接收前端的參數(shù)
            return "hello,world";
        }
    }
    
  2. 編寫完畢后,在主程序中啟動(dòng)項(xiàng)目勃痴,瀏覽器發(fā)起請(qǐng)求靴寂,看界面返回;

    • 控制臺(tái)輸出了SpringBoot的banner
    • 控制條輸出了Tomcat訪問的端口號(hào)
    • 訪問hello請(qǐng)求召耘,字符串成功返回!
  3. 配置pom.xml褐隆,將項(xiàng)目打成jar包

    <distributionManagement>
        <repository>
            <id>proficio-repository</id>
            <name>Proficio Repository</name>
            <url>file://${basedir}/target/deploy</url>
        </repository>
    </distributionManagement>
    
    在這里插入圖片描述
  1. 打成jar包后污它,就可以在任何地方運(yùn)行了!

小結(jié)

? 簡(jiǎn)單幾步庶弃,就完成了一個(gè)web接口的開發(fā)衫贬,SpringBoot就是這么簡(jiǎn)單,所以我們常用它來建立微服務(wù)項(xiàng)目歇攻!

彩蛋

自定義啟動(dòng)banner圖案(賊酷)

在resources下新建banner.txt即可固惯,效果如下:

在這里插入圖片描述
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市缴守,隨后出現(xiàn)的幾起案子葬毫,更是在濱河造成了極大的恐慌镇辉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贴捡,死亡現(xiàn)場(chǎng)離奇詭異忽肛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)烂斋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門屹逛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人汛骂,你說我怎么就攤上這事罕模。” “怎么了帘瞭?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵淑掌,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我图张,道長(zhǎng)锋拖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任祸轮,我火速辦了婚禮兽埃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘适袜。我一直安慰自己柄错,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布苦酱。 她就那樣靜靜地躺著售貌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疫萤。 梳的紋絲不亂的頭發(fā)上颂跨,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音扯饶,去河邊找鬼恒削。 笑死,一個(gè)胖子當(dāng)著我的面吹牛尾序,可吹牛的內(nèi)容都是我干的钓丰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼每币,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼携丁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起兰怠,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤梦鉴,失蹤者是張志新(化名)和其女友劉穎李茫,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尚揣,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涌矢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了快骗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娜庇。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖方篮,靈堂內(nèi)的尸體忽然破棺而出名秀,到底是詐尸還是另有隱情,我是刑警寧澤藕溅,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布匕得,位于F島的核電站,受9級(jí)特大地震影響巾表,放射性物質(zhì)發(fā)生泄漏汁掠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一集币、第九天 我趴在偏房一處隱蔽的房頂上張望考阱。 院中可真熱鬧,春花似錦鞠苟、人聲如沸乞榨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吃既。三九已至,卻和暖如春跨细,著一層夾襖步出監(jiān)牢的瞬間鹦倚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工冀惭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留申鱼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像淫半,于是被迫代替她去往敵國(guó)和親昏滴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拂共,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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