spring boot 專案重新搭建----------mvc配置:引數解析
阿新 • • 發佈:2018-11-26
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()); } }