
問題出現(xiàn)
在開發(fā)項(xiàng)目過程中,今天在啟動(dòng)一個(gè)SpringBoot項(xiàng)目時(shí),發(fā)現(xiàn)SpringBoot項(xiàng)目啟動(dòng)后,在控制臺(tái)看到這樣一個(gè)警告告警:
2022-09-30 14:30:32.956 [main] WARN o.s.b.a.freemarker.FreeMarkerAutoConfiguration:65 - Cannot find template location(s): [classpath:/templates] (please add some templates, check your FreeMarker configuration, or set spring.freemarker.checkTemplateLocation=false)
針對(duì)于[main] WARN這種告警,其實(shí)你可以忽略不必管它。但你如果不想看到它,想知道什么原因的話。其實(shí)這個(gè)提示還是比較明確的。
問題思考
首先看下這個(gè)告警出現(xiàn)的原因,追尋這個(gè)告警,可以大體來猜測(cè)下這個(gè)類所出現(xiàn)的路徑——o.s.b.a (最笨的方法就是去依賴庫每個(gè)包看下)根據(jù)這個(gè)我們其實(shí)是大題上可以猜測(cè)出來是這個(gè)類所指:org.springframework.boot.autoconfigure.freemarker
其實(shí)就是每個(gè)包的包名稱首字母的縮寫,找到這里,再來看下這里是哪一個(gè)文件freemarker.FreeMarkerAutoConfiguration:65 看到這里,是不是心里有了明鏡?在freemarker文件夾下面的FreeMarkerAutoConfiguration.java類中的第65行。追尋這個(gè)意思,我們可以循著他看到我下面的圖。

再來看看這個(gè)警告出現(xiàn)的意思,在檢查FreeMarker模版時(shí),在classpath:/templates找不到本地模版位置,請(qǐng)?zhí)砑铀蛘咴O(shè)置spring.freemarker.checkTemplateLocation=false ,(白話其實(shí)就是不檢查),當(dāng)我知道問題出現(xiàn)的位置以及問題出現(xiàn)的原因時(shí),那么我們就開始手動(dòng)解決他吧。

解決方法
方法一
1、在項(xiàng)目的 /src/main/resources/templates 目錄下添加一個(gè)模板文件,比如xxx.jsp 或 xxx.ftl 的模版文件(其實(shí),第1步可以不用做,可以直接使用2步驟來處理,我個(gè)人也比較推薦使用第二種方式)。
方法二
2、打開項(xiàng)目配置文件 application.properties(或者有的是application.yml、bootstrap.yml),有的人可能喜歡使用 .yml 或者.yaml格式的。
在配置文件中,增加如下配置:
spring.freemarker.checkTemplateLocation=false
或者
spring:
application:
name: xxx
cloud:
nacos:
config:
server-addr: xxx
discovery:
server-addr: xxx
# 在Spring的配置項(xiàng)下面配置檢查本地模版文件為false即可
freemarker:
checkTemplateLocation: false
如果需要配置FreeMarker模版作為模版引擎,我們可以按照下面的方式來處理。除了FreeMarker模版引擎,其實(shí)我們也還可以使用thymeleaf模版引擎,這里不再贅述。
spring:
freemarker:
# req訪問request
request-context-attribute: req
# 后綴名
suffix: .html
content-type: text/html
enabled: true
# 緩存配置
cache: false
# 模板加載路徑 按需配置(這里就是我們上面的忽略配置)
template-loader-path: classpath:/templates/
# 編碼格式
charset: UTF-8
settings:
# 數(shù)字格式化,無小數(shù)點(diǎn)
number_format: '0.##'
方法三
3、第三種方式就是在我們的啟動(dòng)入口配置,此時(shí)我們只想用freemarker來渲染處理xml文件,但是不想使用它作為模板引擎,這時(shí)需要關(guān)掉freemarker 的自動(dòng)裝配。
@SpringBootApplication(exclude = {FreeMarkerAutoConfiguration.class})
方法四
4、這第四種方式,也是比較簡(jiǎn)單的,一勞永逸,那就是關(guān)閉這種告警,眼不見心不煩,針對(duì)有潔癖的可以使用這種方式。這種方式就是關(guān)閉告警。
Mac模式下:InteIIiJ IDEA ==> Preferences... ==>Editor ==> Inspections ==>
或者快捷方式:command(?)+ ,

配置Spring、SpringBoot、SpringCloud等錯(cuò)誤、告警信息

配置FreeMarker等錯(cuò)誤、告警信息

總結(jié)
有問題不怕,要相信解決辦法總比問題多。