美文网首页技术技术杂谈spring boot
Spring Boot 将Freemarker打包到其他jar并

Spring Boot 将Freemarker打包到其他jar并

作者: Devid | 来源:发表于2016-01-06 10:31 被阅读3839次

有时候我们需要封装一些自己的类库,使其能够应用到各个项目中,对于Freemarker类库的封装,官方有介绍,并且Freemarker支持Loading templates from multiple locations,使得封装起来更简单。对于基于Spring Boot构建的项目,对Freemarker类库的封装也有简单的方法。

Spring Boot默认从classpath:/templates/下加载模板文件,那么我们用Maven构建模块的时候,在通用模块下,/resources下建相同的目录结构,是不是就能实现简单的封装呢?答案是肯定的,见下图:

Paste_Image.png

speedy-ext是整个项目中的通用模块,可以在其他项目中复用,由于shiro官方并没有对Freemarker支持的类库,所以在这里我封装了一个Shiro的Freemarker类库,放到通用模块中。

speedy-sample是web模块,也就是整个业务所在,依赖 speedy-ext

Paste_Image.png

我需要在index.ftl中引入shiro.ftl

Paste_Image.png

但是当我们访问/index时,却报错了:

Paste_Image.png

我们还需要将spring.freemarker.prefer-file-system-access设置为false才行!

Paste_Image.png

大功告成!

总结

其实就一句话,将自定义的类库放到同样的模板目录下classpath:/templates,然后将Application.properties中的spring.freemarker.prefer-file-system-access设置为false就可以了。

相关文章

网友评论

  • 阿提说说:我在用spring boot 开发博客www.178le.net ,这个问题
    为什么一定要加spring.freemarker.prefer-file-system-access = false 才行,不加就访问不到 jar包里的ftl文件
  • 023c544c68b4:我想请问大神,Spring boot和Freemarker整合,为啥用相对路径读不到world模板,用文件系统的绝对路径可以读到模板,这个问题困扰我四天了,绝望!在校大学生,望您帮助
    Devid:freemarker扔到src/main/resource目录下,直接 /fkname.ftl就能读取到。示例代码:
    Template t = freemarkerConfig.getTemplate(template);
    String text = FreeMarkerTemplateUtils.processTemplateIntoString(t, model);
  • Akux:封装的shiro.ftl能发我参考下么
    Akux:@Devid 感谢:pray:
    Devid:@AK丶Akuma https://github.com/gefangshuai/SpeedyFramework/blob/master/speedy-ext-shiro/src/main/resources/templates/shiro.ftl
  • 9a74ab215476:弄成之后必有打赏。
    大神您好,我是乐视网的技术负责人,我现在要用到这个配置,请您帮忙弄一下,非常感谢。18811150382 mengtianbao@letv.com.
    Devid:@9a74ab215476 您是我的大神:pray:
    小弟不才,可以发详细问题过来看看好不好解决
    Devid:@9a74ab215476 按照文章说的改下参数不行吗?
  • 9a74ab215476:大神您好,我是乐视网的技术负责人,我现在要用到这个配置,请您帮忙弄一下,非常感谢。18811150382 mengtianbao@letv.com
    活这么大就没饱过:漂亮的黑,乐视被你黑得体无完肤啊:smirk:

本文标题:Spring Boot 将Freemarker打包到其他jar并

本文链接:https://www.haomeiwen.com/subject/uvuxkttx.html