如何在thymleaf上下文中读取blob格式文件

时间:2016-03-18 11:06:45

标签: java spring thymeleaf spring-annotations

我想将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格式文件?

1 个答案:

答案 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);