Freemarker 加載字符串模板

平時使用模板都是加載模板文件十拣,這次處理的文件是保存在數(shù)據(jù)庫的字符串柳琢。
項目使用的是spring-boot和freemarker整合

  • 環(huán)境

JDK  : 1.8
框架 : Spring boot
模板 : Freemarker
  • 整合freemarker

<!--整合freemarker-->
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
  • 使用字符串作模板

  1. 在類中注入模板配置
@Autowired
@Qualifier("freeMarkerConfiguration")
private Configuration       freemarkerConf;
  1. 核心代碼
String templateContent="這是一個字符串加載的模板  ${name}";
// 新建一個字符串的模板加載器
StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
// 設(shè)置模板 匀油,其中
stringTemplateLoader.putTemplate("myTemplate", templateContent);
freemarkerConf.setTemplateLoader(stringTemplateLoader);

freemarkerConf.clearTemplateCache();
Template   template = freemarkerConf.getTemplate("myTemplate", "utf-8");

  • 實際應(yīng)用

    private Template createTemplate(String name, String templateContent) throws IOException {
        Template template = freemarkerConf.getTemplate(name, "utf-8");

        if (template != null) {
            return template;
        }
        synchronized (this){ // 以下操作不是線程安全获雕,要加上同步
            // 獲取模板加載器
            TemplateLoader templateLoader = freemarkerConf.getTemplateLoader();
            if(templateLoader != null && templateLoader instanceof StringTemplateLoader){
                // 如果加載器已經(jīng)是字符串加載器富雅,則在原來的加載器上put一個新的模板
                ((StringTemplateLoader) templateLoader).putTemplate(name, templateContent);
                freemarkerConf.setTemplateLoader(templateLoader);
            }else{
                // 如果原來的模板加載器不是字符串的(默認(rèn)是文件加載器)蒲犬,則新建
                StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
                stringTemplateLoader.putTemplate(name, templateContent);
                freemarkerConf.setTemplateLoader(stringTemplateLoader);
            }
            // 這里要清一下緩存宜狐,不然下面可能會獲取不到模板
            freemarkerConf.clearTemplateCache();
            template = freemarkerConf.getTemplate(name, "utf-8");

            return template;
        }
    }

注意:

1. 設(shè)置好模板后要清一下緩存势告,否則你新保存的模板可能會獲取不到!!!

2. 設(shè)置加載器為字符加載器,意味著就不能使用文件的方式讀取模板了 8Ш恪T厶ā!俭驮!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末回溺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子表鳍,更是在濱河造成了極大的恐慌馅而,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,185評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件譬圣,死亡現(xiàn)場離奇詭異瓮恭,居然都是意外死亡,警方通過查閱死者的電腦和手機厘熟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評論 3 385
  • 文/潘曉璐 我一進店門屯蹦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來维哈,“玉大人,你說我怎么就攤上這事登澜±樱” “怎么了?”我有些...
    開封第一講書人閱讀 157,684評論 0 348
  • 文/不壞的土叔 我叫張陵脑蠕,是天一觀的道長购撼。 經(jīng)常有香客問我放闺,道長鞋怀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,564評論 1 284
  • 正文 為了忘掉前任欢嘿,我火速辦了婚禮晃跺,結(jié)果婚禮上揩局,老公的妹妹穿的比我還像新娘。我一直安慰自己掀虎,他們只是感情好凌盯,可當(dāng)我...
    茶點故事閱讀 65,681評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著烹玉,像睡著了一般驰怎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上春霍,一...
    開封第一講書人閱讀 49,874評論 1 290
  • 那天砸西,我揣著相機與錄音,去河邊找鬼址儒。 笑死芹枷,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的莲趣。 我是一名探鬼主播鸳慈,決...
    沈念sama閱讀 39,025評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼喧伞!你這毒婦竟也來了走芋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,761評論 0 268
  • 序言:老撾萬榮一對情侶失蹤潘鲫,失蹤者是張志新(化名)和其女友劉穎翁逞,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溉仑,經(jīng)...
    沈念sama閱讀 44,217評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡挖函,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,545評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了浊竟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怨喘。...
    茶點故事閱讀 38,694評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡津畸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出必怜,到底是詐尸還是另有隱情肉拓,我是刑警寧澤,帶...
    沈念sama閱讀 34,351評論 4 332
  • 正文 年R本政府宣布梳庆,位于F島的核電站暖途,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏靠益。R本人自食惡果不足惜丧肴,卻給世界環(huán)境...
    茶點故事閱讀 39,988評論 3 315
  • 文/蒙蒙 一残揉、第九天 我趴在偏房一處隱蔽的房頂上張望胧后。 院中可真熱鬧,春花似錦抱环、人聲如沸壳快。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽眶痰。三九已至,卻和暖如春梯啤,著一層夾襖步出監(jiān)牢的瞬間竖伯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評論 1 266
  • 我被黑心中介騙來泰國打工因宇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留七婴,地道東北人。 一個月前我還...
    沈念sama閱讀 46,427評論 2 360
  • 正文 我出身青樓察滑,卻偏偏與公主長得像打厘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贺辰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,580評論 2 349

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