作用:對本次請求的controller的原返回值進行處理,然后返回自定義的返回值
注:Spring中是先根據元返回值查詢HttpMessageConverter,然后再走ResponseBodyAdvice,所以我們修改了元返回值之后,還要考慮之前的這個MessageConverter是否支持新的自定義返回值,所以此時應該將通用轉換器jackson的那個放到轉換器最前面
下面是代碼示例,首先創建一個返回值類
public class MyResult {private int status;
}
1.創建一個類A,implements ResponseBodyAdvice接口
2.在類A上加注解@ControllerAdvice,不能是@Component等其他注入注解
@ControllerAdvice
public class ValidException implements ResponseBodyAdvice{@Overridepublic boolean supports(MethodParameter returnType, Class converterType) {return true;}// 參數body就是controller原返回值// 返回值Object是本次請求實際返回去的值@Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {if(body.getClass()!= MyResult.class){return new MyResult();}return body;}
}
java調用webservice接口 三種方法。之前也說了,如果原返回值是stirng,則spring會選擇StringMessageConvert,所以我們選擇萬能的jackson轉換器,需要修改默認轉換區順序
@Component
public class MessageConvert implements WebMvcConfigurer {@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {// 我使用的版本最后一個轉換器是jackson,所以我直接把最后一個拿到最前面HttpMessageConverter<?> con = converters.get(converters.size() - 1);converters.add(0, con);System.out.println(converters);}
}
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态