在Spring应用程序中从FreeMarker获取模板文本

在我的Spring应用程序中,我想使用FreeMarker生成将由我的应用程序发送的电子邮件文本。 生成的文本永远不会返回到视图,因此我不需要配置FreeMarker视图解析器。 文档似乎表明我应该像这样配置一个FreeMarkerConfigurationFactoryBean

   

一旦我配置了这个bean,我如何实际获得为特定模板生成的文本,以及特定的变量Map。 换句话说,后面是什么代码:

 String templateName = "email" Map templateVars = new HashMap(); templateVars.put("firstName", "john"); templateVars.put("surname", "doe"); // Now how do I get the template text? 

Spring模块似乎提供了Spring和FreeMarker之间的另一种集成,这使得检索模板文本非常明显,但我不想在我的应用程序中添加额外的依赖项,除非绝对必要。

另外,我是否需要在FreeMarkerConfigurationFactoryBean中添加一些额外的配置以确保缓存模板?

干杯,唐

这样的事情应该有效

在您提供的代码之前,初始化:

 MailSender mailSender = new JavaMailSenderImpl(); SimpleMailMessage message = new SimpleMailMessage(); 

然后,在您的代码之后添加:

 StringBuffer content = new StringBuffer(); try { content.append(FreeMarkerTemplateUtils.processTemplateIntoString( configuration.getTemplate(templateName), templateVars)); } catch (IOException e) { // handle } catch (TemplateException e) { // handle } message.setFrom(getMailFromName() + " <" + getMailFromAddr() + ">"); message.setTo(getMailTo()); if (getCcTo() != null) message.setCc(getCcTo()); message.setSubject(getSubject()); message.setText(content.toString()); mailSender.send(message); 

这是我的applicationContext.xml:

            

你的缓存问题……

我只在’viewResolver’bean中看到过bean属性’cache’,你说你不会使用它。

另请参阅: 第14章。集成视图技术