在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java/ RequestBodyAdvice 和 ResponseBodyAdvice 不

RequestBodyAdvice 和 ResponseBodyAdvice 不執(zhí)行

自己實(shí)現(xiàn)的 RequestBodyAdvice 和 ResponseBodyAdvice 不執(zhí)行啊
打斷點(diǎn)發(fā)現(xiàn)都沒(méi)有進(jìn)去。

@RestControllerAdvice(annotations = RestController.class)
public class EncodeResponseAdvice implements ResponseBodyAdvice {

    @Override
    public boolean supports(MethodParameter methodParameter, Class aClass) {
        return methodParameter.getMethodAnnotation(ResponseEncode.class) != null;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter methodParameter, MediaType mediaType, Class aClass,
                                  ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
        return body;
    }

}

無(wú)論是用 @RestControllerAdvice 還是@ControllerAdvice 都嘗試過(guò)。
注解里寫(xiě) basePackage 也嘗試過(guò)。
整個(gè) baidu google 能搜的內(nèi)容都看過(guò),并沒(méi)有更多地方需要配置的吧?
從日志里可以看到這個(gè)類(lèi)已經(jīng)被注冊(cè)為 bean 了,為什么我這里就不會(huì)觸發(fā)呢 ?

有大佬踩過(guò)這個(gè)坑嗎?

回答
編輯回答
熊出沒(méi)

在 return methodParameter.getMethodAnnotation(ResponseEncode.class) != null;前面打印一下有沒(méi)有反應(yīng)?

2018年6月29日 23:59
編輯回答
巷尾

已經(jīng)找到問(wèn)題所在的,這個(gè) ResponseBodyAdvice 只支持 @ResponseBody 注解的 controller 方法,
同樣,RequestBodyAdvice 只支持帶有 @RequestBody 注解的 controller 方法參數(shù)的方法,同時(shí)上報(bào)的數(shù)據(jù)必須是 json or xml

也就是說(shuō),想要用這兩個(gè)實(shí)現(xiàn) http 內(nèi)容的加密解密,是很有局限性的。
并不支持表單 post 請(qǐng)求

2017年4月18日 00:46
編輯回答
熊出沒(méi)
@Override
    public boolean supports(MethodParameter methodParameter, Class aClass) {
        return methodParameter.getMethodAnnotation(ResponseEncode.class) != null;
    }

這個(gè)是判斷是否要處理的,你的方法上有加@ResponseEncode注解嗎?

2017年6月18日 00:06