java調用webservice接口 三種方法,SpringMvc-ResponseBodyAdvice接口與@ControllerAdvice注解

 2023-10-15 阅读 26 评论 0

摘要:作用:對本次請求的controller的原返回值進行處理,然后返回自定義的返回值 注:Spring中是先根據元返回值查詢HttpMessageConverter,然后再走ResponseBodyAdvice,所以我們修改了元返回值之后,還要考慮之前的這個MessageConverter是否

作用:對本次請求的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);}
}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/137083.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息