如何在aop实现返回值替换成新值

该代码示例展示了如何使用@ControllerAdvice和ResponseBodyAdvice在SpringMVC中全局拦截响应,特别是对/test/list路径的响应。当处理到该路径时,它会将JSON对象中的money属性替换为*,以保护敏感信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@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;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值