Spring Boot入門教程(一):搭建SpringMVC工程和Spring Boot工程

????????Spring Boot入門教程(一):搭建SpringMVC工程和Spring Boot工程

轉(zhuǎn)載自:https://blog.csdn.net/vbirdbest/article/details/79573740

一:傳統(tǒng)SpringMVC工程搭建步驟

搭建一個(gè)Spring + SpringMVC的工程虫碉,需要如下幾步:

引入Spring依賴,一般都會(huì)引入很多Spring的依賴须板,如spring-core兢卵、spring-context、spring-context-support甜奄、spring-webmvc 等;

配置web.xml, 要配置contextConfigLocation參數(shù)窃款,要配置Spring的監(jiān)聽器ContextLoaderListener,要配置SpringMVC的分發(fā);Servlet DispatcherServlet

配置spring-servlet.xml烟阐,配置SpringMVC對(duì)應(yīng)的內(nèi)部資源視圖識(shí)別器InternalResourceViewResolver的前綴紊扬、后綴等;

配置applicationContext.xml,配置Spring的核心配置文件;

配置完成后就可以寫Controller了檀葛,然后啟動(dòng)tomcat;


二:具體步驟

1. 引入Spring依賴

<properties>

? ? <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

? ? <log4j.version>2.5</log4j.version>

? ? <jstl.version>1.2</jstl.version>

? ? <spring.version>4.2.3.RELEASE</spring.version>

</properties>

<dependency>

? <groupId>javax.servlet</groupId>

? <artifactId>jstl</artifactId>

? <version>${jstl.version}</version>

</dependency>

<dependency>

? <groupId>org.springframework</groupId>

? <artifactId>spring-webmvc</artifactId>

? <version>${spring.version}</version>

</dependency>

<dependency>

? <groupId>org.springframework</groupId>

? <artifactId>spring-core</artifactId>

? <version>${spring.version}</version>

</dependency>

<dependency>

? <groupId>org.springframework</groupId>

? <artifactId>spring-context</artifactId>

? <version>${spring.version}</version>

</dependency>

<dependency>

? <groupId>org.springframework</groupId>

? <artifactId>spring-context-support</artifactId>

? <version>${spring.version}</version>

</dependency>

2. 配置web.xml

配置web.xml

3. 配置WEB-INF/spring-servlet.xml


配置web-info

4. applicatonContext.xml


applicatonContext.xml

5. HelloWorldController


Controller


配置tomcat并啟動(dòng)

Spring缺點(diǎn): 配置繁瑣卵凑,各種XML勺卢、Annotation配置象对,如果出錯(cuò)了也很難找出原因;


創(chuàng)建Spring Boot 工程

Spring Boot的項(xiàng)目也是基于maven或者gradle的森书,有兩種方式:一種是通過IDE創(chuàng)建(ide也是基于官網(wǎng)的掺冠,只不過幫你自動(dòng)下載并使用ide幫你打開了)冠绢,一種是在官網(wǎng)上創(chuàng)建https://start.spring.io, github地址:https://github.com/spring-projects/spring-boot/

方式一:使用IntelliJ IDEA的Spring Initializer創(chuàng)建


Spring Initializer創(chuàng)建


Spring Initializer創(chuàng)建


Spring Initializer創(chuàng)建


Spring Initializer創(chuàng)建

方式二:https://start.spring.io

在瀏覽器上直接輸入https://start.spring.io,只需要Dependencies中輸入Web選中即可(輸入Web就是集成SpringMVC功能萧朝,如果不需要可以什么都不輸入夏哭,后面如果需要集成SpringMVC的話也是超級(jí)very很簡單的),然后生成項(xiàng)目(即下載項(xiàng)目)何址,然后使用idea打開即可


這種方式還要跑到官網(wǎng)进胯,下載項(xiàng)目,然后再使用idea open項(xiàng)目,如果使用idea就不需要這些步驟希停,會(huì)自動(dòng)下載幫你打開署隘。可以看到傳統(tǒng)SpringMVC的集成方式和使用Spring Boot的搭建方式有什么不同磁餐,最大的特點(diǎn)就是快,沒有那么多的配置羞延,可以說是零配置,不像傳統(tǒng)SpringMVC項(xiàng)目入愧,要配置很多東西嗤谚,雖然這些東西都是從別的地方復(fù)制過來的,完成起來也需要幾分鐘時(shí)間旁赊,肯能還會(huì)出錯(cuò)椅野,都是一些體力活,創(chuàng)建一個(gè)Spring Boot項(xiàng)目只需要幾秒鐘就能搞定鳄橘,而且不會(huì)出錯(cuò)瘫怜,也不需要任何配置;Spring Boot項(xiàng)目就是為了解決Spring配置繁瑣的問題,最大化的實(shí)現(xiàn)約定大于配置(convention over configuration)鲸湃,以最快的速度來搭建項(xiàng)目,采用注解配置來替換xml配置;


兩種方式的區(qū)別:

傳統(tǒng)maven-archetype-webapp和Spring Boot項(xiàng)目結(jié)構(gòu)比較;


比較一


比較二

打包方式不同:

傳統(tǒng)web maven項(xiàng)目使用的是maven-archetype-webapp骨架,打包方式是使用的war包

Spring Boot的打包方式是使用的jar包

pom.xml中引入的依賴不同

傳統(tǒng)web項(xiàng)目是引入多個(gè)單獨(dú)的依賴

Spring Boot是引入的spring-boot-starter, 在spring boot中大部分依賴不需要指定version炸裆,因?yàn)榘姹咎?hào)已經(jīng)在spring-boot-starter-parent中定義過了

項(xiàng)目目錄結(jié)構(gòu)不同

傳統(tǒng)的web項(xiàng)目中src/main/java下是沒有類的烹看,Spring Boot項(xiàng)目中有一個(gè)啟動(dòng)類(Project名稱+Application), 而且在src/test/java中也有一個(gè)測(cè)試類(Project名稱+ApplicationTest)

傳統(tǒng)的web項(xiàng)目有src/main/webapp/WEB-INF/web.xml, Spring Boot中沒有web.xml

傳統(tǒng)的web項(xiàng)目resources的目錄是空的,Spring Boot項(xiàng)目中resources中有static酱吝、templates目錄和一個(gè)配置文件application.properties

項(xiàng)目運(yùn)行方式不同

傳統(tǒng)web項(xiàng)目是啟動(dòng)tomcat

Spring Boot項(xiàng)目是直接運(yùn)行main方法或者直接運(yùn)行jar(java -jar <project>.jar);


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

集成框架非常簡單土思,例如集成SpringMVC忆嗜,只需引入spring-boot-starter-web這一個(gè)依賴崎岂,也不需要做任何配置,這樣集成起來非扯沉В快速方便损合。Spring Boot支持很多常用的框架集成, 如 log、test嫁审、mybatis律适、nosql、mq捂贿、模板技術(shù)(thymeleaf、freemark)扣草、jpa颜屠、aop、actuator 等密浑, 具體請(qǐng)查看Starter POMs粗井、 Starter POMs

引入的依賴的數(shù)量很少,例如要引入測(cè)試依賴JUnit浇衬、Hamcrest、Mockito只需要引入spring-boot-starter-test這一個(gè)依賴就行了

自動(dòng)化配置,使用默認(rèn)配置梳星,再也不需要applicationContext.xml等配置文件了

支持自定義配置,可以配置在application.yml或者Config類中冤灾,如果自定義了就使用自定義的值,沒有自定義的則使用默認(rèn)的值

運(yùn)行更加簡單匿垄,直接使用java -jar 命令归粉,或者直接在IDE中運(yùn)行main方法;


Spring Boot的缺點(diǎn):

高度封裝,出現(xiàn)問題不易排查届榄,適合有開發(fā)驚訝的攻城獅倔喂,不適合初學(xué)者,初學(xué)者上手容易班缰,一旦出現(xiàn)問題就很難排查;將現(xiàn)有或傳統(tǒng)的Spring Framework項(xiàng)目轉(zhuǎn)換為Spring Boot應(yīng)用程序是一個(gè)非常困難和耗時(shí)的過程悼枢。它僅適用于全新Spring項(xiàng)目;資料比較少,文檔比較少;Spring Boot 正在快速發(fā)展给梅,可能版本變動(dòng)比較大;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末双揪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子运吓,更是在濱河造成了極大的恐慌疯趟,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倦青,死亡現(xiàn)場(chǎng)離奇詭異盹舞,居然都是意外死亡隘庄,警方通過查閱死者的電腦和手機(jī)癣亚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門述雾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人唆缴,你說我怎么就攤上這事取募。” “怎么了玩敏?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵旺聚,是天一觀的道長。 經(jīng)常有香客問我砰粹,道長碱璃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任肛真,我火速辦了婚禮爽航,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘历极。我一直安慰自己衷佃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布锄列。 她就那樣靜靜地躺著,像睡著了一般右蕊。 火紅的嫁衣襯著肌膚如雪吮螺。 梳的紋絲不亂的頭發(fā)上鸠补,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音规惰,去河邊找鬼泉蝌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勋陪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寒锚,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼刹前,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼雌桑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起筹燕,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤撒踪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后制妄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烫幕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年敞映,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捷犹。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡萍歉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出枪孩,到底是詐尸還是另有隱情藻肄,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布斗幼,位于F島的核電站抚垄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏桐经。R本人自食惡果不足惜浙滤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一纺腊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧揖膜,春花似錦、人聲如沸拜隧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽干奢。三九已至,卻和暖如春忿峻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工黑低, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留酌毡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓菩暗,卻偏偏與公主長得像旭蠕,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子掏熬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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