【问题标题】:How to enable hot refresh of freemarker templates in spring boot?如何在spring boot中启用freemarker模板的热刷新?
【发布时间】:2015-06-01 14:13:11
【问题描述】:

我正在寻找在 Spring Boot 框架上启用 ftl 文件的热刷新,以便对 ftl 文件的更改不需要重新启动应用程序。 我曾尝试通过 application.properties 进行以下设置,

spring.freemarker.cache=false
spring.freemarker.template_update_delay=0

但仍然没有达到它。

如何通过应用程序属性启用它?

谢谢!

【问题讨论】:

  • 该设置使用什么TemplateLoader? (换句话说,您将模板保存在哪里以及如何替换它们?)
  • 我的模板文件夹位于类路径(资源文件夹)中。我应该把它从我的包裹里拿出来吗?
  • 如果您为freemarker.cache 日志类别启用调试日志记录,您可能会发现FM 实际上会重新检查资源是否已更改。然后,要么在“已部署”应用程序未使用的位置替换它们,要么正在使用的 Java ClassLoader 进行某种缓存或报告错误的最后修改时间。那么,您可以编写自己的代码来查看更改吗?直接通过Class.getResource返回的URL加载资源查看。另外,然后检查java.net.URLConnection.getLastModified() 是否返回正确的值。
  • 顺便说一句,cache=false 是 Spring 特定的扩展吗?因为 FreeMarker 没有这样的设置。无论如何,您都不应该禁用缓存。
  • 您的模板文件在WEB-INF 目录中吗?

标签: spring spring-boot freemarker


【解决方案1】:

我在使用 SpringBoot 和 maven 时遇到了同样的问题。我刚刚发现模板位于目标/类/模板中,因此在修改模板后,您必须重新构建项目以在类中重新安装模板。这对我有用。

【讨论】:

    【解决方案2】:

    即使我也面临同样的问题。尝试以隐身模式打开。尝试将浏览器缓存设置为 false。没有任何效果。

    现在我将我对原始 ftl 所做的任何更改复制并粘贴到目标文件夹的 ftls

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

        构建 -> 构建项目, build button location 或者您可以自动设置构建, spring doc 说,当您更改模板时,IDE 会自动更新您的类路径, 但它没有,所以你应该自己做。 在 Eclipse 或 IntelliJ 中,单击 构建 -> 构建项目

        希望能帮到你

        官方链接 https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html#using-boot-devtools-property-defaults 20.2 自动重启 触发重启

        【讨论】:

          猜你喜欢
          • 2015-12-30
          • 1970-01-01
          • 1970-01-01
          • 2016-05-01
          • 2021-11-27
          • 1970-01-01
          • 1970-01-01
          • 2021-10-13
          • 1970-01-01
          相关资源
          最近更新 更多