我正在研究Java/Spark框架中的應用程序,並使用Apache Velocity模板引擎。我的問題是,每當我更改模板中的任何內容時,我必須重新加載整個服務器。有沒有辦法讓某種熱插拔能夠在不重新加載整個服務器的情況下在模板上工作?如何在無需重新加載服務器的情況下重新加載模板?
private final VelocityEngine velocityEngine;
public VelocityTemplateEngine() {
Properties properties = new Properties();
properties.setProperty("resource.loader", "class");
properties.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
properties.setProperty("class.resource.loader.cache", "true");
properties.setProperty("class.resource.loader.modificationCheckInterval", "2");
properties.setProperty("velocimacro.library.autoreload", "true");
properties.setProperty("velocimacro.permissions.allow.inline.to.replace.global", "true");
velocityEngine = new org.apache.velocity.app.VelocityEngine(properties);
//velocityEngine.init(); <-- This bit of code does not change anything when uncommented...
}
解決方案:
通過改變resource.loader到文件和class.resource.loader.class到org.apache.velocity.runtime.resource.loader解決。 FileResourceLoader
properties.setProperty("resource.loader", "file");
properties.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
properties.setProperty("file.resource.loader.path", root + "/src/main/resources/"); // "root" points to the app folder
properties.setProperty("class.resource.loader.cache", "true"); // Enable cache
properties.setProperty("class.resource.loader.modificationCheckInterval", "2"); // Check for new files every 2 seconds
我開始懷疑它甚至有可能,如果沒有人響應這個...... –