栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot 对controller返回结果 切面拦截实例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot 对controller返回结果 切面拦截实例

         一、 业务场景:将controller层最终返回的信息,抓取返回的code,然后根据自定义的国际化code配置文件,根据返回结果中的code,添加code对应的中文解释。

         二、思路:

        1、做一个AOP切面,把所有的controller层方法作为切入点,使用@AfterReturning,对切入点的返回结果进行增强处理,如以下代码所示

@Aspect
@Component
@Slf4j
public class ResultAspect {

    
    @Pointcut("execution(public * io.github.talelin.latticy.controller..*.*(..))")
    public void handlePlaceholder() {
    }

    
    @AfterReturning(returning = "ret", pointcut = "handlePlaceholder()")
    public void doAfterReturning(Object ret) throws Throwable {
        System.out.println("ResultAspect result");
        System.out.println(ret);
        if (ret instanceof UnifyResponseVO) {
            UnifyResponseVO result = (UnifyResponseVO) ret;
            int code = result.getCode();
            String message = CodeMessageConfiguration.getMessage(code);
            if (StrUtil.isNotBlank(message) && StrUtil.isBlank((CharSequence) result.getMessage())) {
                result.setMessage(message);
            }
        }
    }
}

         2、封装一个配置类,将code和对应的value值通过一个Map获取(配置文件中是key-value格式)。使用@ConfigurationProperties 以及 @PropertySource注解获取一个配置信息,如以下代码所示:

@SuppressWarnings("ConfigurationProperties")//忽略@ConfigurationProperties 注解的警告
@Component
@ConfigurationProperties
@PropertySource(value = "classpath:code-message.properties", encoding = "UTF-8")
public class CodeMessageConfiguration {

    private static Map codeMessage = new HashMap<>();

    public static String getMessage(Integer code) {
        return codeMessage.get(code);
    }

    public Map getCodeMessage() {
        return codeMessage;
    }

    public void setCodeMessage(Map codeMessage) {
        CodeMessageConfiguration.codeMessage = codeMessage;
    }
}

        3、封装好信息配置类后,在切面中我们可以获取到controller返回的code,我们拿到这个使用配置类当中的getMessage 获取对应的中文解释,最后将其set到返回结果当中

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425291.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号