繁体   English   中英

来自数据库的带有Freemarker模板的Spring Mail

[英]Spring Mail with Freemarker Templates from Database

我是将Freemarker添加到Spring和Spring Mail的新手。 我没有使用Spring Boot,但是我使用的是最新的Spring 4.x,尽管我们有一个应用程序上下文XML文件,但我们确实使用了注释。

因此,最终我想从数据库中读取模板,因为我们可能有许多针对许多客户的模板。 我们不会从文件名或磁盘加载模板。

我们将Spring Application作为一个Maven多模块项目:

entity.jar - module
dao.jar - module
services.jar - module
ws.jar - module

在服务下,我们有一个定义Freemarker的应用程序上下文文件,如下所示:

 <bean id="freemarkerConfiguration"
        class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
        <property name="preTemplateLoaders">
            <list>
                <ref bean="databaseTemplateLoader" />
            </list>
        </property>
      </bean>

      <bean name="databaseTemplateLoader" 
       class="com.myapp.server.util.DatabaseToFreeMarkerTemplateLoader" />

我有一门新课,叫做:

  public class DatabaseToFreeMarkerTemplateLoader extends StringTemplateLoader
     {
        // todo: add code here
     }

但是我不确定这里还需要什么。 我正在互联网上寻找一些示例,但找不到太多。

如果有人可以为我提供示例,或在此处引用我的其他链接,我会尽力查看我是否可以从字面上填写空白。

谢谢!

顺便说一句:我很惊讶我必须在服务层中包含spring-web才能完成这项工作。 我只是想格式化电子邮件而不是html页面。 因此,如果有一个更好的格式化工具可以与Spring无缝兼容,请告诉我。

我对Spring的这一部分不太了解,但我认为您不需要spring-web 您可以直接使用FreeMarker API进行配置(即创建freemarker.template.Configuration单例bean)和生成输出( template = configuration.getTemplate(...)template.process(...) )。 最后,您只需使用message.setText(theOutputFromTemplateDotProcess, true); (其中message是Spring MimeMessageHelper )。 我相信,这里没有太多与Spring集成的东西。 (即使有人需要从Spring资源加载模板,他们也可以通过Configuration.setTemplateLoader使用org.springframework.ui.freemarker.SpringTemplateLoader 。)

从直接使用FreeMarker API(与Spring不相关)开始,请参见以下示例: http : //freemarker.org/docs/pgui_quickstart_all.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM