当您创建类型的Bean时
SpringTemplateEngine
在您的配置类中
@Service
不使用此bean:
Service
public class EmailService {
private static final String ENCODING = "UTF-8";
private final JavaMailSender emailSender;
public final TemplateEngine template = new SpringTemplateEngine();
@Autowired
public EmailService(JavaMailSender emailSender) {
this.emailSender = emailSender;
}
你的
template
字段用新创建的初始化
SpringTemplateEngine
实例,而您的构造函数只接受
JavaMailSender
例子
您需要添加
TemplateEngine
参数,并删除的初始化
样板
领域
所以你的
EamilService
看起来像:
...
private final TemplateEngine template;
@Autowired
public EmailService(JavaMailSender emailSender, TemplateEngine templateEngine) {
this.emailSender = emailSender;
this.templateEngine = templateEngine;
}
...
作为
Javadoc for TemplateEngine
说,一个
模板引擎
没有
ItemplateResolver
配置将使用
StringTemplateResolver
这就解释了你看到的行为。