Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot spring boot starter freemarker找不到模板_Spring Boot_Freemarker - Fatal编程技术网

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插件的参考文档中