測試環境:win10.JDK 1.8
需求背景:springboot 配合 thymeleaf 自己開發一個小站點。
例如其它路由/xxx/yyyy.html 打包后 正常訪問 jar包體內classpath:/templates/ 下模板,並開啟cache 以加快訪問速度;
此時新增一個功能:例如 路由/outtemplate/zzzz.html 去jar包運行路徑下指定目錄提取模板 且不開啟cache 方便發布后實時更新,且在java中處理一些通用邏輯。(如果無邏輯處理:可以外部創建static供 springboot自動掃描,html作為靜態文件訪問)
主要測試類:
ClassLoaderTemplateResolver || SpringResourceTemplateResolver
創建任意類 使用@Configuration 標簽。我圖方便放在了之前寫的一個類內部
ClassLoaderTemplateResolver 測試:
訪問測試路由:
http://localhost:8081/class/test ;測試寫死模板:classGet.html
classGet.html所在目錄:
編寫ClassLoaderTemplateResolver Bean 將classes 下的test目錄設置為該解析器根目錄
結果訪問 成功;
但是這個還不符合需求,我需要用到外部目錄 則使用 SpringResourceTemplateResolver
SpringResourceTemplateResolver 成功掃到模板,並正常訪問
總結:初步理解兩個類的簡單用法。如果有不對希望大家指正
疑問:是否有方式 假設Controller編寫訪問路由時,設置該路由使用的解析器。假設項目多個解析器order排序處理。根目錄下文件有同名 出現同名導致獲取模板錯誤。
或者前面N個路由都沒掃描的模板文件最后一個掃描到是否會降低掃描效率(在不開啟cache的條件每次獲取模板應該都會掃描文件,這種理解是否錯誤呢)。