我想将thymleaf模板存储到数据库而不是文件系统中。
因为如果我存储到文件系统中,如果我们需要运行多个应用程序节点来跨服务器分配负载,这将是主要问题。模板不应该很大,因此很容易将它们存储在DB中。
直到现在我通过上下文中的预定义路径读取文件,使用类似
的代码FileTemplateResolver resolver = new FileTemplateResolver();
String filePath = env.getProperty("external.notification.template.dir");
resolver.setPrefix(filePath);
resolver.setSuffix(".html");
resolver.setTemplateMode("HTML5");
resolver.setOrder(templateEngine.getTemplateResolvers().size());
resolver.setCacheable(false);
templateEngine.addTemplateResolver(resolver);
可以使用blob创建临时文件并从同一位置读取。但可能有很好的方法。
任何人都知道读取blob数据的配置。
无论如何使用thymleaf上下文读取blob格式文件?
答案 0 :(得分:0)
我创建了DbTemplateResolver
类,扩展了TemplateResolver
。它有内部类,有一个db调用,从表中获取图像数据。
private class DbResourceResolver implements IResourceResolver {
@Override
public InputStream getResourceAsStream(TemplateProcessingParameters params, String resourceName) {
NotificationTemplate template = templateService.getNotificationTemplateByName(resourceName);
if (template != null) {
return new ByteArrayInputStream(template.getFileData());
}
return null;
}
@Override
public String getName() {
return "dbResourceResolver";
}
}
这将调用流程方法调用。
mergedMessage = templateEngine.process(fileName, ctx);