談談springmvc的ResponseBodyAdvice

最近在工做中遇到一個問題:咱們正在開發的項目要求新版本之後的接口返回值要加密,而且要兼容之前老版本的接口(就是老版本接口不加密)。之前有個項目卻是有過相似的作法,使用的是aop實現。aop當然可以達到實現,但查看spring文檔就會發現,spring早就爲咱們預留了實現接口,比aop更加方便。spring

spring的實現是ResponseBodyAdvice,顧名思義,請求返回值加強。json

實現以下:ide

@ControllerAdvice(basePackages = "com.test")
public class EncryptResponseAdvice implements ResponseBodyAdvice<Object> {

  
    @Override
    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
        return true;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType,
            MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType,
            ServerHttpRequest request, ServerHttpResponse response) {
        //先作版本判斷,而後加密處理
       
        return body;
    }
}

ResponseBodyAdvice還能夠實現jsonp,具體的類spring已經存在。jsonp

其實aop也徹底能夠實現,但既然spring已經提供了此功能,就最好用它的。不得不說,spring的擴展性仍是挺強大的。加密

相關文章
相關標籤/搜索