spring mvc 自定义配置
1.实现某些处理器的接口.
class MyHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
System.out.println("开始请求自定义配置");
return false;
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
return null;
}
}
2.继承WebMvcConfigurationSupport
类,并采用@Configuration
注解,然后覆盖父类的方法,添加自定义的实现方法.
@Configuration
public class MyWebConfiguration extends WebMvcConfigurationSupport {
@Override
protected void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
//添加自定义的参数解析类
argumentResolvers.add(new MyHandlerMethodArgumentResolver());
super.addArgumentResolvers(argumentResolvers);
}
}
该配置类可以用于注册以下请求处理器(HandlerMappings
):
- 优先级0,请求映射处理(
RequestMappingHandlerMapping
). - 优先级1的将URL路径直接映射到视图名称的处理器(
HandlerMapping
). - 优先级2,用于通过url查找对应controller的处理器(
BeanNameUrlHandlerMapping
). - 优先级倒数第2,用于静态资源的处理器(
HandlerMapping
). - 优先级倒数第1,用于请求转发的Servlet处理器(
HandlerMapping
).
注册以下适配器(HandlerAdapters
):
- 用于处理controller里面采用注解方法的适配器(
RequestMappingHandlerAdapter
),比如@RequestMapping
. - 用于支持上次HTTP请求以促进内容缓存适配器(
HttpRequestHandlerAdapter
). - 用于处理实现接口
Controller
的控制器的适配器(SimpleControllerHandlerAdapter
).
注册以下异常处理器(HandlerExceptionResolverComposite
):
- 处理方法异常
@ExceptionHandler
的异常处理器(ExceptionHandlerExceptionResolver
). - 处理响应异常
@ResponseStatus
的异常处理器(ResponseStatusExceptionResolver
). - 其他已知异常的异常处理器(
DefaultHandlerExceptionResolver
).
注册AntPathMatcher
和UrlPathHelper
:
- 修改视图控制器(
ViewControllers
)的HandlerMapping
.