7.addResourceHandlers静态资源解析
如:
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
8.addCorsMappings跨域支持
registry.addMapping("/greeting-javaconfig").allowedOrigins("http://localhost:9000");
.addCorsMappings()中的参数代表支持跨域的url,.allowedOrigins()中的参数代表可以访问该接口的域名,设置为”*”可支持所有域。
9.addViewControllers添加自定义视图控制器
// 对 "/hello" 的 请求 redirect 到 "/home"
registry.addRedirectViewController("/hello", "/home");
// 对 "/admin/**" 的请求 返回 404 的 http 状态
registry.addStatusController("/admin/**", HttpStatus.NOT_FOUND);
// 将 "/home" 的 请求响应为返回 "home" 的视图
registry.addViewController("/home").setViewName("home");
10.configureViewResolvers配置视图解析器
enableContentNegotiation启用内容裁决解析器
11.addArgumentResolvers添加参数解析器
如添加一个JSON解析
实现HandlerMethodArgumentResolver
public class JSONArgumentResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
Class<?> paramType = parameter.getParameterType();
return JSONObject.class.isAssignableFrom(paramType) || JSONArray.class.isAssignableFrom(paramType);
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
Class<?> paramType = parameter.getParameterType();
String json = webRequest.getParameter(parameter.getParameterName());
if (JSONObject.class.isAssignableFrom(paramType)) {
return JSON.parseObject(json);
} else if (JSONArray.class.isAssignableFrom(paramType)) {
return JSON.parseArray(json);
} else {
Method method = parameter.getMethod();
throw new UnsupportedOperationException("Unknown parameter type: " + paramType + " in method: " + method);
}
}
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(new JSONArgumentResolver());
}
12.addReturnValueHandlers添加返回值处理
对返回值进行处理,1.处理哪种类型 2.处理逻辑
13.configureMessageConverters 配置消息转换
HTTP输入请求格式向Java对象的转换;Java对象向HTTP输出请求的转换
配置一个FastJson消息转换器
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new StringHttpMessageConverter(Charset.forName("UTF-8")));
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue);
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
converters.add(fastJsonHttpMessageConverter);
}
14.extendMessageConverters在原有的基础上拓展,而上面是替换
15.configureHandlerExceptionResolvers配置异常处理解析器
配置一个全局异常处理
@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler({EntityValidException.class})
@ResponseBody
public KeyValue handleForbiddenException(Exception ex) {
return KeyValue.err(ex.getMessage());
}
}