SpringMVC自定义绑定参数、及Controller增强处理

本文介绍了如何在SpringMVC中利用AOP思想和自定义参数解析器简化入参解密和返参加密的过程。通过实现HandlerMethodArgumentResolver接口,创建自定义的参数绑定,支持@MobileRequestParam注解的参数。同时,利用@ControllerAdvice和ResponseBodyAdvice对Controller方法进行全局增强,实现在返回响应体前进行加密处理,降低代码重复,提高代码可读性。
摘要由CSDN通过智能技术生成

在基于SpringMVC的WEB服务开发过程中,经常会遇到如入参解密、返参加密这样的过程,这个过程可能需要很多代码可能只需要一行调用,但是每个Controller都需要调用这样一个方法就可能会感觉繁琐,而且不利于主要业务代码阅读,有时会影响项目架构。本文通过一个小案例,基于Spring AOP思想来解决类似这样的问题,希望能起到举一反三的作用,在开发过程中能够解决一些问题、减小代码的重复,用最少的代码完成功能。

SpringMVC的基本过程

使用SpringMVC时,所有的请求都是最先经过DispatcherServlet的,然后由DispatcherServlet选择合适的HandlerMapping和HandlerAdapter来处理请求,HandlerMapping的作用就是找到请求所对应的方法,而HandlerAdapter则来处理和请求相关的的各种事情,比如参数如何绑定到@RequestMapping的方法中,参数如何返回到Model中等。
SpringMVC Controller参数解析是由RequestMappingHandlerAdapter类进行处理的,这个类通过一个List维护不仅维护了SpringMVC自带的参数解析方法,同时也支持用自定义的参数解析器。SpringMVC通过查询List中的解析器,如果找到一个能支持解析的对象,就会让它去解析而不会再去查找其它的解析器。所以一般来讲Controller方法的入参模型实体类只有一个对应的解析器去处理。
参数绑定接口是HandlerMethodArgumentResolver,接口定义了两个方法: boolean supportsParameter(MethodParameter parameter)需要返回该解析器是否支持参数 parameter的封装,支持就返回true;然后具体的解析业务由接口的另一个方法 Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory)处理,并返回处理后的对象。
以下代码支持有@MobileRequestParam注解的Controller方法参数进行参数绑定。

public class EhrMobileRequestParamResolver implements HandlerMethodArgumentResolver {
   

    private static final Logger logger = LoggerFactory.getLogger(EhrMobileRequestParamResolver.class);

    @Override
    public boolean supportsParameter(MethodParameter parameter) {
   
        return parameter.hasParameterAnnotation(MobileRequestParam.class);
    }

    /**
     * 解析json串,并绑定传参
     */
    @Override
    public Object resolveArgument(MethodParameter parameter
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值