【Spring Boot】初體驗

我不能停滯不前

前言

  • 心心念念的Spring Boot初體驗終于要寫了;
  • Spring Boot項目的具體創(chuàng)建過程不再贅述鳖敷,因為網(wǎng)上有一堆了。。本文主要介紹我在創(chuàng)建過程中的踩坑皆看,還有填坑
  • 本文中用的了一個 ResponseEntity類型,不懂的戳下面鏈接:
    【Spring】源碼淺析 - ResponseEntity.ok
  • 各位看官背零,在讀文過程中腰吟,若有建議,請不吝賜教

創(chuàng)建Spring Boot項目的三種方法

  1. Spring Initializr.
  2. Spring Tool Suite (STS)
  3. Spring Boot CLI(Command Line Interface)

不論idea,還是eclipse毛雇,創(chuàng)建Spring Boot項目都是基于以上三種方法之一

使用idea嫉称,基于Spring Initializr創(chuàng)建Spring Boot項目

關(guān)于創(chuàng)建Spring Boot項目,網(wǎng)上已有一堆相關(guān)資料灵疮,不再贅述织阅;
個人覺得這一篇寫的不錯了,各位看官可以戳這里:Spring Boot【快速入門】震捣;

踩坑

坑一:Failed to configure a DataSource

Failed to configure a DataSource

原因
我在創(chuàng)建項目的時候荔棉,導(dǎo)入了數(shù)據(jù)庫的相關(guān)jar包,在創(chuàng)建后蒿赢,沒有配置數(shù)據(jù)庫

  • 數(shù)據(jù)庫:MySQL
  • ORM框架:MyBatis


    選擇SQL相關(guān)jar包
application.properties

解決方案
方案一:刪除pom.xml中數(shù)據(jù)庫jar包的配置

SQL pom.jpg

方案二:在application.properties中配置數(shù)據(jù)庫

#MySQL數(shù)據(jù)庫配置
spring.datasource.url=jdbc:mysql://localhost/blog
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root

由于只是初體驗润樱,用不到數(shù)據(jù)庫,所以我采用方案一羡棵;

坑二:addViewControllers無法返回頁面

由于我不想在Controller層寫返回頁面的方法壹若,所以決定自定義一個類實現(xiàn)WebMvcConfigurer接口,重寫addViewControllers方法去返回頁面皂冰;沒想到踩坑了┑( ̄Д  ̄)┍
自定義類實現(xiàn)WebMvcConfigurer接口

import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author sincH
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/h/test").setViewName("test");
    }
}

結(jié)果無法返回頁面

addViewControllers無法返回頁面

原因
通過控制臺的日志輸出店展,分析出InternalResourceView渲染頁面失敗了
配置Thymeleaf前

那么深層分析一下,為啥子會失敗呢秃流?通過網(wǎng)上沖浪得知:
templates文件夾下的的頁面要配置了模板引擎才能訪問到赂蕴;
由此推測一下,因為InternalResourceView無法訪問到頁面剔应,導(dǎo)致渲染失敗睡腿,是嗎?峻贮?

解決方案
既然知道了原因是沒有配置模板引擎席怪,那么配置模板引擎即可,我選擇Thymeleaf

  1. 修改pom.xml
<!--Thymeleaf模板引擎-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!-->Thymeleaf的非嚴格HTML格式包-->
        <dependency>
            <groupId>net.sourceforge.nekohtml</groupId>
            <artifactId>nekohtml</artifactId>
            <version>1.9.22</version>
        </dependency>
  1. 修改application.properties
#Thymeleaf 配置
spring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html
#緩存設(shè)置為false, 這樣修改之后馬上生效纤控,便于調(diào)試挂捻;生產(chǎn)環(huán)境下可以設(shè)置為true
spring.thymeleaf.cache=false

成功解決!船万!

test頁面

對比配置Thymeleaf前后的控制臺日志輸出

配置Thymeleaf前

配置Thymeleaf后

發(fā)現(xiàn)
配置Thymeleaf后刻撒,用ThymeleafView去渲染頁面,然后就成了耿导,真是声怔。。怎么說舱呻,甚是妙啊

填坑

  • 關(guān)于頁面static文件夾與templates文件夾的區(qū)別
    • static存放靜態(tài)頁面醋火,templates存放動態(tài)頁面
    • static下的頁面悠汽,不論是前端,還是后端芥驳,都可以用xxx.html 可以訪問到(前提是必須在Web應(yīng)用根目錄下)
      例如:我的Web應(yīng)用根目錄是/blog柿冲,那么訪問static下的test頁面,就該這么寫/blog/test.html兆旬;
      templates下的頁面需要配置了模板引擎才能訪問到
  • 當(dāng)類上注解@RestController時假抄,該類方法返回值類型不同,則返回結(jié)果不同
    當(dāng)返回值類型是
    • String丽猬;返回(json)字符串宿饱,而不是渲染視圖;
    • ResponseEntity;返回(json)字符串
    • ModelAndView脚祟;返回頁面

后記

真的 寫篇技術(shù)文章真心不容易刑棵;不過這樣也挺好;學(xué)習(xí)知識點后愚铡,寫技術(shù)文章可以加深記憶。嗯胡陪。沥寥。挺好的。

參考文章

Spring Boot【快速入門】
ViewControllerRegistry的用法
spring boot(4)-html和templates
Spring boot找不到template下面的html文件解決方法
SpringBoot訪問不了resources/templates下的頁面

下篇預(yù)告

【Spring Boot】搭建個人博客 - 需求分析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末柠座,一起剝皮案震驚了整個濱河市邑雅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妈经,老刑警劉巖淮野,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吹泡,居然都是意外死亡骤星,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門爆哑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洞难,“玉大人,你說我怎么就攤上這事揭朝《蛹” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵潭袱,是天一觀的道長柱嫌。 經(jīng)常有香客問我,道長屯换,這世上最難降的妖魔是什么编丘? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上瘪吏,老公的妹妹穿的比我還像新娘癣防。我一直安慰自己,他們只是感情好掌眠,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布蕾盯。 她就那樣靜靜地躺著,像睡著了一般蓝丙。 火紅的嫁衣襯著肌膚如雪级遭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天渺尘,我揣著相機與錄音挫鸽,去河邊找鬼。 笑死鸥跟,一個胖子當(dāng)著我的面吹牛丢郊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播医咨,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼枫匾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拟淮?” 一聲冷哼從身側(cè)響起干茉,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎很泊,沒想到半個月后角虫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡委造,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年戳鹅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昏兆。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡粉楚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出亮垫,到底是詐尸還是另有隱情模软,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布饮潦,位于F島的核電站燃异,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏继蜡。R本人自食惡果不足惜回俐,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一逛腿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧仅颇,春花似錦单默、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至耕皮,卻和暖如春境蜕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凌停。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工粱年, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人罚拟。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓台诗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赐俗。 傳聞我的和親對象是個殘疾皇子拉庶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

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