本文介绍的是一个注解jar,用来校验参数,支持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":{}}

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