Spring boot spring boot starter freemarker找不到模板
使用Spring boot spring boot starter freemarker找不到模板,spring-boot,freemarker,Spring Boot,Freemarker,使用springbootstarterfreemarker而无需进一步配置,我希望能够从默认模板路径(src/resources/tempaltes)加载模板(注意它是src/..而不是build/..) 将此文件保存在此处: src/resources/templates/emails/welcome.ftl 正在尝试将其作为模板加载: // some service class @Autowired private Configuration freemarkerConfig;
springbootstarterfreemarker
而无需进一步配置,我希望能够从默认模板路径(src/resources/tempaltes
)加载模板(注意它是src/..
而不是build/..
)
将此文件保存在此处:
src/resources/templates/emails/welcome.ftl
正在尝试将其作为模板加载:
// some service class
@Autowired
private Configuration freemarkerConfig;
public void doStuff() {
Template t = freemarkerConfig.getTemplate("emails/welcome.ftl");
// ...
}
失败,并显示以下错误消息:
freemarker.template.TemplateNotFoundException: Template not found for name "emails/welcome.text.ftl".
The name was interpreted by this TemplateLoader: MultiTemplateLoader(loader1 = FileTemplateLoader(baseDir="/some/path/backend/build/resources/main/templates", canonicalBasePath="/some/path/backend/build/resources/main/templates/"), loader2 = ClassTemplateLoader(resourceLoaderClass=org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer, basePackagePath="" /* relatively to resourceLoaderClass pkg */)).
因此,配置看起来还行,但它使用的不是src
文件夹,而是build
文件夹。通过/gradlew bootRun
运行时,我们会看到错误。执行/gradlew构建
,然后执行/gradlew引导运行
可以找到模板,因为它们现在位于构建
文件夹中。但对于发展而言,不需要完全重建将是非常感激的
因此,我知道我们现在可以手动配置freemarker从src
文件夹加载,但这感觉有点不对劲
我是否做了s/th错误,或者这是预期的行为?您可以配置
bootRun
,以便从源位置加载源。假设模板是主源代码集的一部分,即它们位于src/main/resources
中,配置如下:
bootRun {
sourceResources sourceSets.main
}
这在Spring Boot的Gradle插件的参考文档中