目录
1.2、编写自定义的配置类 xxxConfiguration
1.3、编写一个配置类实现 WebMvcConfigurer 即可定制化web功能
1.4、@EnableWebMvc + WebMvcConfigurer
1、定制化常见方法
1.1、修改配置文件;
#spring.mvc.static-path-pattern=/static/**
#?????????
spring.servlet.multipart.max-file-size=10MB
#???????????
spring.servlet.multipart.max-request-size=100MB
#???????servlet?????????"/"???
#spring.mvc.servlet.path=/mvc/
#??servlet??
server.port=8000
#server.undertow.accesslog.dir=/tmp
1.2、编写自定义的配置类 xxxConfiguration
@Bean替换、增加容器中默认组件;视图解析器
@Configuration(proxyBeanMethods = false)
public class WebConfig {
@Bean
public HiddenHttpMethodFilter hiddenHttpMethodFilter(){
HiddenHttpMethodFilter methodFilter = new HiddenHttpMethodFilter();
methodFilter.setMethodParam("_m");
return methodFilter;
}
}
1.3、编写一个配置类实现 WebMvcConfigurer 即可定制化web功能
@Bean给容器中再扩展一些组件
@ServletComponentScan(basePackages = "com.uclass.thymeleaf")
@Configuration
public class AdminWebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//在注册中心添加拦截器
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns("/**") //所有请求都被拦截,包括静态资源
.excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**","/js/**"); //放行的请求
}
}
1.4、@EnableWebMvc + WebMvcConfigurer
1、可以全面接管SpringMVC,所有规则全部自己重新配置; 实现定制和扩展功能
2、此时SpringMVC默认自动配置的组件会全部失效。
/**
* @EnableWebMvc:全面接管
* 1、静态资源?视图解析器?欢迎页.....全部失效
*/
@EnableWebMvc
@Configuration
public class AdminWebConfig implements WebMvcConfigurer{
/**
* 定义静态资源行为
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
/**
* 访问 /aa/** 所有请求都去 classpath:/static/ 下面进行匹配
*/
registry.addResourceHandler("/aa/**")
.addResourceLocations("classpath:/static/");
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns("/**") //所有请求都被拦截包括静态资源
.excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**",
"/js/**","/aa/**"); //放行的请求
}
}
2、原理分析套路
场景starter --》 xxxxAutoConfiguration自动配置 --》 导入xxx组件 --》绑定xxxProperties配置文件 --》 绑定配置文件项
3、@EnableWebMvc配置失效原理
1、WebMvcAutoConfiguration 默认的SpringMVC的自动配置功能类。静态资源、欢迎页.....
2、一旦使用 @EnableWebMvc。会 @Import(DelegatingWebMvcConfiguration.class)
3、DelegatingWebMvcConfiguration 的 作用,只保证SpringMVC最基本的使用:
1)所有功能的定制都是 WebMvcConfigurer 合起来一起生效
2)自动配置了一些非常底层的组件。
3)DelegatingWebMvcConfiguration 集成了 WebMvcConfigurationSupport
4、WebMvcAutoConfiguration 里面的配置要能生效 必须
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
即没有配置 WebMvcConfigurationSupport
5、@EnableWebMvc:
1)引入了 DelegatingWebMvcConfiguration
2)继承了 WebMvcConfigurationSupport
3) 导致了 WebMvcAutoConfiguration 没有生效。
4)最终使得SpringMVC的自动配置项全部失效