SpringBoot中配置freemarker忽略自動(dòng)配置

問題出現(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é)

有問題不怕,要相信解決辦法總比問題多。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容