Spring Boot默认资源位置找不到静态文件

时间:2018-10-29 18:43:21

标签: spring spring-boot

我正在运行一个本地Spring Boot应用程序,该应用程序将构建为.jar文件并部署到AWS。我无法让该应用程序解析对嵌入式静态文件的引用。我了解到Spring Boot默认使用以下资源目录:

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
        "classpath:/META-INF/resources/", "classpath:/resources/",
        "classpath:/static/", "classpath:/public/" }

我已经相应地构建了css目录结构:

/src/main/resources/static/css/styles.css

在我的Thymeleaf模板中,我尝试按以下方式引用该文件(尝试使用斜杠和不使用斜杠):

<link th:href="@{/css/styles.css}" rel="stylesheet" />

当我在WebMvcAutoConfiguration.getResourceLocations()中设置断点并启动应用程序时,我可以看到静态资源位置确实是Spring提供的默认值。

当我尝试直接在“ http://localhost:8080/css/styles.css”处命中文件时,该请求将通过具有根映射@GetMapping()的默认控制器进行路由,并加载网站主页。作为测试,我暂时将映射更改为“ / home”,并且能够直接打css文件,但是在浏览器中查看页面时,样式仍然没有应用。 / p>

我尝试了许多在SO和其他地方(包括https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boothttps://www.baeldung.com/spring-mvc-static-resources)找到的解决方案。我尝试实现自己的@Configuration / @EnableWebMvc类,该类实现了WebMvcConfigurer并覆盖了addResourceHandlers()方法。我也尝试覆盖application-local.yml的资源路径。我尝试了每种可能的路径组合,相对于根,相对于页面,等等,带有和不带有“ webjars”,但对我来说没有任何用处。希望在正确的方向上轻柔地轻推或猛烈踢腿。

[EDIT]我还尝试通过PathResourceResolver进行调试,但是它唯一认可的唯一资源请求是favicon.ico。对我的CSS文件的请求从未进入PathResourceResolver。在默认资源路径之一下请求任何资源都不应通过这里吗?

0 个答案:

没有答案