Spring Boot——自定义Web配置类后无法访问/static文件夹下静态资源

问题描述

自定义Web配置类后无法访问 /static文件夹下静态资源。

已加相关依赖包。

官方文档

Spring MVC Auto Configuration

Maven

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

问题分析

(1)在src/main/resources/目录下创建 static文件夹 

(2)在src/main/resources/目录下创建 resources文件夹 

(3)在src/main/resources/目录下创建 public文件夹 

(4)在src/main/resources/目录下创建 META-INF/resources文件夹 

目录结构图: 

优先级顺序:/META-INF/resources>resources>static>public

Spring Boot 访问静态资源的规则在WebMvcAutoConfiguration自动配置类中

在该类下有对资源处理的方法 

默认按照该加载顺序,加载静态资源文件。

Web的自动配置类中

在没有WebMvcConfigurationSupport.class的情况下,才会使用Spring Boot的Web自动配置

在==@EnableWebMvc==中,通过 @Import 导入了DelegatingWebMvcConfiguration类

而 DelegatingWebMvcConfiguration类 继承于 WebMvcConfigurationSupport 类,从而导致了 WebMvcAutoConfiguration 类没有生效。 

 WebMvcConfigurationSupport 类没有添加任何静态资源的映射。

 

解决方案

对于功能较少的项目,可以使用 @EnableWebMvc 注解,全面接管Spring Boot对SpringMVC的自动注入,自己来写SpringMVC 运行所需的一些配置,这样会减少自动注入带来的一些无意义性能消耗,可以将WebMvcAutoConfiguration自动配置类中addResourceLocations方法代码直接覆盖自定义配置类的addResourceLocations方法,即可解决无法访问/static文件夹下静态资源的问题;

对于功能较多的项目,使用Spring Boot推荐的对SpringMVC拓展方法 —— 继承 WebMvcConfigurer 类,这样不仅可以实现添加WEB组件,也保留了SpringBoot底层的自动注入。

参考文章

https://blog.csdn.net/qq_34369569/article/details/99292925

https://blog.csdn.net/qq_34797335/article/details/80194137

https://blog.csdn.net/qq_36481052/article/details/79075214

https://www.liangzl.com/get-article-detail-132221.html

https://blog.csdn.net/qq_35299712/article/details/80061532

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starzkg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值