简谈spring boot静态资源无法访问问题

spring boot的自动配置

spring boot的静态资源访问路径默认情况下是:
classpath:/static/
classpath:/resources/
classpath:/MATE-INF/resources/
classpath:/

只要你把你要访问的资源放在这些文件下,就能访问。
localhost:8080/abc
abc是你的资源的所在路径

什么时候会出现无法访问的情况呢

spring boot的自动配置失效了
失效有这么几个情况:

  • @EnableWebMvc 此标签会全面接管springMVC,自动配置会失效
  • @Configuration 在此标签下继承了WebMvcConfigureSupport,也会是自动配置失效

其实这两种情况是一样的,spring boot的自动配置之所以会失效是因为

@ConditionalOnMissingBean({WebMvcConfigurationSupport.class})
public class WebMvcAutoConfiguration {
    public static final String DEFAULT_PREFIX = "";
    public static final String DEFAULT_SUFFIX = "";
    private static final String[] SERVLET_LOCATIONS = new String[]{"/"};

  • @ConditionalOnMissingBean({WebMvcConfigurationSupport.class})意思是在WebMvcConfigurationSupport不存在时执行下面的类。

  • WebMvcAutoConfiguration就是spring boot的自动配置类。

这样第二种情况就清楚了
在@EnableWebMvc 中

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({DelegatingWebMvcConfiguration.class})
public @interface EnableWebMvc {
}

有一个@Import({DelegatingWebMvcConfiguration.class}) 会引入一个DelegatingWebMvcConfiguration点进去

@Configuration
public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {
    private final WebMvcConfigurerComposite configurers = 
    new WebMvcConfigurerComposite();
    public DelegatingWebMvcConfiguration() {
    }

它也继承了WebMvcConfigurationSupport类

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值