ResponseBodyAdvice与RequestBodyAdvice

本文介绍了Spring MVC中ResponseBodyAdvice和RequestBodyAdvice的功能及使用方法。ResponseBodyAdvice用于在响应体写出前进行处理,如修改返回的对象;RequestBodyAdvice则用于增强请求体的处理,在读取请求body或转换为对象前进行相应操作。

转载自:https://blog.youkuaiyun.com/ai_xiangjuan/article/details/79837712

ResponseBodyAdvice

主要作用是响应体写出之前做一些处理。

@Order(1)  
@ControllerAdvice(basePackages = "com.github")  
public class MyResponseBodyAdvice implements ResponseBodyAdvice<Object> {  

    @Override  
    public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> converterType) {  
        return methodParameter.getMethod().getReturnType().isAssignableFrom(User.class);  
    }  

    @Override  
    public Object beforeBodyWrite(  
            Object obj, MethodParameter methodParameter, MediaType mediaType,  
            Class<? extends HttpMessageConverter<?>> converterType,  
            ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {  

        User user = ((User)obj);  
        user.setName("---" + user.getName() + "---");  
        return user;  
    }  
}

RequestBodyAdvice

请求增强。在读取请求body之前或者在body转换成对象之前可以做相应的增强。

RequestBodyAdviceResponseBodyAdvice是用于对请求和响应的消息进行处理的接口。它们可以在HttpMessageConverter转换消息之前和之后对消息进行定制化操作。 HttpMessageConverter是用于将请求和响应的消息Java对象进行转换的组件。它负责将请求的消息转换为方法参数的对象,并将方法的返回值转换为响应的消息。 具体来说,在请求的处理过程中,HttpMessageConverter首先会将请求的消息转换为Java对象。在这个过程中,可以使用RequestBodyAdvice接口的beforeBodyRead方法在消息转换之前对请求的消息进行处理。然后,HttpMessageConverter会将转换后的Java对象作为参数传递给业务方法进行处理。在业务方法处理完毕后,HttpMessageConverter会将方法的返回值再次转换为响应的消息。在这个过程中,可以使用ResponseBodyAdvice接口的beforeBodyWrite方法在消息转换之后对响应的消息进行处理。 因此,RequestBodyAdviceResponseBodyAdvice可以在HttpMessageConverter转换消息的前后对消息进行修改、记录日志或添加额外的信息等操作。它们提供了更灵活的方式来对请求和响应的消息进行定制化处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Spring解密之RequestBodyAdviceResponseBodyAdvice、HttpMessageConverter](https://blog.youkuaiyun.com/Sophisticated_/article/details/102614321)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [ResponseBodyAdvice和HttpMessageConverter应用浅析](https://blog.youkuaiyun.com/qq_26950567/article/details/115263381)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值