前言
之前实现邮件发送使用的 模版是 路径classpath:/templates/的html文件
image.png
后来增加需要 是这些模版文件 需要自定义编辑 并保存到数据库表里
那这些模版文件内容就变成了 字符串 , 需要支持两个模版解决方式
解决方式
1 定义两个 TemplateResolver 为spring bean 分别为 字符串解析模版 StringTemplateResolver
和 spring 资源解析模版 SpringResourceTemplateResolver
@Configuration
public class StringTemplateEngineConfig {
@Bean("stringTemplateResolver")
public StringTemplateResolver getStringTemplateResolver(){
StringTemplateResolver stringTemplateResolver = new StringTemplateResolver();
stringTemplateResolver.setCacheable(true);
stringTemplateResolver.setTemplateMode(TemplateMode.HTML);
return stringTemplateResolver;
}
@Bean("springResourceTemplateResolver")
public SpringResourceTemplateResolver getSpringResourceTemplateResolver(){
SpringResourceTemplateResolver springResourceTemplateResolver = new SpringResourceTemplateResolver();
springResourceTemplateResolver.setCacheable(true);
springResourceTemplateResolver.setPrefix("classpath:/templates/");
springResourceTemplateResolver.setSuffix(".html");
springResourceTemplateResolver.setTemplateMode(TemplateMode.HTML);
springResourceTemplateResolver.setApplicationContext(SpringContextHolder.getApplicationContext());
return springResourceTemplateResolver;
}
}
在邮件发送时候 类中引入
@Autowired
private SpringResourceTemplateResolver springResourceTemplateResolver;
@Autowired
private StringTemplateResolver stringTemplateResolver;
每次调用时候 设置解析方式
templateEngine.setTemplateResolver(springResourceTemplateResolver);
String emailContent = templateEngine.process(mailBo.getTemplatePath(),context);
网友评论