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类