本文介绍的是一个注解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":{}}
当参数越多时,简化代码越明显,而且哪些字段不能为空,哪些字段可以为空一眼可见。