使用 Spring 注解jar 进行参数校验 (Spring SpringMVC SpringBoot 注解判断部分参数是否可以为空)

本文介绍的是一个注解jar(想看原理的同学,移驾 https://blog.csdn.net/qq_15674631/article/details/87264008),用来校验参数,支持requestHead和requestBody两种请求方式,也支持Spring(SSM)和SpringBoot框架,支持使用get、post,不使用注解(默认)、使用@RequestParam以及@RequestBody(RequestBody仅仅支持对象、Map)接收参数,返回的对象为MsgResultVO,因为jar使用的aop相关实现,因此使用本jar的话请将返回对象类型设置为MsgResultVO或MsgResultVO<T>,此对象包含大部分通用的属性以及一些简单的方法,应该能满足90%以上的常用需求,它包含以下属性

Boolean result = true;//结果值,用来判断请求成功或者失败

String resultCode;//结果码,部分人更偏向使用结果码来表示状态

String resultMsg;//结果信息,返回的时候添加的附加信息

T resultData;//结果对象,用来封装请求所需要返回的对象

Map<String, Object> params;//当以上条件均不能满足需求时,提供map对象封装

提供的方法

构造函数:

MsgResultVO()

MsgResultVO(Map<String, Object> params)

失败或成功函数:

errorResult(MsgConstantEM em) 

errorResult(String resultCode, String resultMsg) //推荐使用

errorResult(T prototype, MsgConstantEM em) 

errorResult(T prototype, String resultCode, String resultMsg) //推荐使用

successResult()//推荐使用

successResult(String resultCode, String resultMsg) //推荐使用

successResult(MsgConstantEM em) 

successResult(T prototype) //推荐使用

successResult(T prototype, MsgConstantEM em) 

successResult(T prototype, String resultCode, String resultMsg) //推荐使用

介绍完返回对象,就进入正题吧

1)首先需要在pom文件中添加依赖

引用地址:

<dependency>
  <groupId>com.github.engwen</groupId>
  <artifactId>owlMagicComment</artifactId>
  <version>1.1.2</version>
</dependency>

2)修改配置

spring springMVC 项目:

需要在 spring mvc servlet 的配置文件中添加以下配置:

<context:component-scan base-package="com.owl.comment"/>
<aop:aspectj-autoproxy/>

SpringBoot 项目:

需要在项目启动类上配置扫描com.owl包:

@ComponentScan(basePackages = {"com.owl"… })

下面就是参数校验注解 @OwlCheckParams的说明了

     该注解用于controller层校验请求参数,包含notAllNull(不可全部为空),notNull(不能为空)以
及canNull(可以为空)三个属性,为方便书写接口文档以及后期查询代码,此三个属性合并起来应当为本接口
可接收的所有参数,notAllNull中的参数不能全部为null,否则该接口将返回 "请求参数 **不能全为空",
notNull中的参数不能为空,否则该接口将返回 "请求参数 ** 不能为空",canNull中的参数可以为空。

    使用本注解需设置默认返回的对象为MsgResultVO

     例如:

    原始代码:

        @RequestMapping("/signin")
        public MsgResultVO signin(User user) {
            MsgResultVO result = new MsgResultVO();
            if(null==user.getPassword || "" == user.getPassword ){
                result.errorMsg("密码不能为空");
            } else if(null==user.getAccount || ""==user.getAccount ){
                result.errorMsg("账号不能为空");
            } else {
                result = userService.signin(user);
            }
            return result;
        }


      使用注解后代码:

        @RequestMapping("/signin")
        @OwlCheckParams(notNull={"account","password"})
        public MsgResultVO signin(User user) {
            return userService.signin(user);
        }


      返回数据均为{"result":false,"resultCode":"0002","resultMsg":"请求参数 password 不能
为空","resultData":null,"params":{}}

当参数越多时,简化代码越明显,而且哪些字段不能为空,哪些字段可以为空一眼可见。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值