首页 > 解决方案 > 在 Spring Boot MVC 中为静态文件提供服务的 URL 路径的默认资源处理程序

问题描述

我有一个基于 Spring Boot 的项目(基于spring-boot-starter-parent并且spring-boot-starter-web我想在其中提供静态内容(内置在另一个模块中,并使用 复制到项目中maven-resources-plugin)。

使用默认配置/约定,它会在 misc 中查找静态内容。位置,如classpath:/staticclasspath:/public,如果要从根 URL 提供静态内容,这很有用,但对于本项目而言,情况并非如此。

我想/web/通过派生WebMvcConfigurer(并用 注释类@Configuration)并覆盖该public void addResourceHandlers(ResourceHandlerRegistry registry)方法来成功完成它;registry.addResourceHandler("/web/**").addResourceLocations("classpath:/static/web/");

这在显式引用/web/-folder 中的文件名时有效,但我无法弄清楚如何模拟“默认文档”行为,例如index.html应该为/web/. 如果您index.html在其中一个根目录中放置静态内容,它将由WelcomePageHandlerMapping.

标签: javaspringspring-bootspring-mvcweb

解决方案


找到解决方案;我还必须重写addViewControllers()以创建显式映射并修复优先级:

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/web/").setViewName("index.html");
    registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}

推荐阅读