最近項目需要接入prometheus監(jiān)控,由于架構那邊是基于actuator做的監(jiān)控數(shù)據(jù)采集攀痊,使用spring boot 2.2.6作為開發(fā)版本桐腌,業(yè)務系統(tǒng)需要統(tǒng)一升級spring boot2.0以上才能接入監(jiān)控。
在升級過程中苟径,原來的項目中有部分業(yè)務使用freemark作為模板引擎案站,統(tǒng)一將對應的文件放到resource/template目錄下。
但是application.yml未做任何配置棘街。在spring boot 1.5.8這個版本是可以找到該視圖的蟆盐。
到了spring boot 2,由于freemark默認文件后綴名修改遭殉,升級后出現(xiàn)如下報錯:
特地去翻了一下spring-boot-autoconfigure下關于freemark的配置代碼石挂,spring boot 1.5.8下的類org.springframework.boot.autoconfigure.freemarker.FreeMarkerProperties
public class FreeMarkerProperties extends AbstractTemplateViewResolverProperties {
public static final String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/";
public static final String DEFAULT_PREFIX = "";
public static final String DEFAULT_SUFFIX = ".ftlh";
......
/**
* Comma-separated list of template paths.
*/
private String[] templateLoaderPath = new String[] { DEFAULT_TEMPLATE_LOADER_PATH };
再看下spring boot 2.2.6下同樣的類文件
public class FreeMarkerProperties extends AbstractTemplateViewResolverProperties {
public static final String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/";
public static final String DEFAULT_PREFIX = "";
public static final String DEFAULT_SUFFIX = ".ftlh";
......
/**
* Comma-separated list of template paths.
*/
private String[] templateLoaderPath = new String[] { DEFAULT_TEMPLATE_LOADER_PATH };
發(fā)現(xiàn)2.2.6版本的默認后綴名改掉了。
最后险污,解決的版本有兩種:
1 修改文件的后綴名為.ftlh
2 application.yml文件添加如下配置:
freemarker:
#設置模板后綴名
suffix: .ftl
# 設置文檔類型
content-type: text/html
# 設置頁面編碼格式
charset: UTF-8
# 設置頁面緩存
cache: false
# 設置ftl文件路徑
template-loader-path:
- classpath:/templates
我這邊選了第二種方案痹愚,有了統(tǒng)一配置后,即使后續(xù)再次升級,也不會擔心默認配置被修改拯腮。