@ControllerAdvice
public class responAop implements ResponseBodyAdvice {
@Override
public boolean supports(MethodParameter methodParameter, Class aClass) {
return true;
}
@Override
public Object beforeBodyWrite(Object resBody, MethodParameter arg1, MediaType arg2, Class aClass, ServerHttpRequest req,
ServerHttpResponse resp) {
String requestUri = req.getURI().getPath();
Object dataedPermission = null;
if (requestUri.contains("/test/list")) {//拦截的路径
dataedPermission = handledata(JSONObject.toJSONString(resBody, SerializerFeature.WriteMapNullValue));
}
return dataedPermission;
}
private Object handledata (String jsonStr){
jsonStr = replaceSpecialStr(jsonStr, "money");//money为需要替换的属性
return jsonStr;
}
public static String replaceSpecialStr (String orgStr, String fieldName){
String beginChar = "\"" + fieldName + "\":";
String newValue = "\"***\"";
String newStr = orgStr.replaceAll(beginChar + "([-]{0,1}[0-9.]{1,}(E-8){0,1})", beginChar + newValue);
return newStr;
}
}
如何在aop实现返回值替换成新值
最新推荐文章于 2024-11-09 19:09:12 发布
该代码示例展示了如何使用@ControllerAdvice和ResponseBodyAdvice在SpringMVC中全局拦截响应,特别是对/test/list路径的响应。当处理到该路径时,它会将JSON对象中的money属性替换为*,以保护敏感信息。
2929

被折叠的 条评论
为什么被折叠?



