spring基于java config的支持方法级别的参数校验
来源:互联网 发布:棕色牛津鞋搭配 知乎 编辑:程序博客网 时间:2024/06/16 00:42
在写api接口的时候,经常需要对参数做一些基本的校验判断,如果手动处理的话,不免太过繁琐,基于hibernate下的validator jar可以满足我们的需求。其为我们提供的很多注解校验像@NotEmpty、@NotNull、@NotBlank等等。对于大多数咱们写的接口,可能接收参数并没有用VO来接收,只是单纯的字符串,也是用的最多的。所以我们需要基于接口方法上进行注解参数空校验。
现在spring官方建议使用java配置来做我们开发,所以以下是让上述注解配置在spring4.x中生效,配置很简单:
首先在spring中创建:
@Beanpublic MethodValidationPostProcessor mvp(){return new MethodValidationPostProcessor();}MethodValidationPostProcessor 的bean;
其次在需要使用注解的web曾层类级别级别上添加注解:@Validated,来告诉MethodValidationPostProcessor当前CLss的bean需要开启方法级别的验证支持;
最后添加拦截400异常方法获取message消息,封装成你的通用API返回格式。
例:
import com.droilaw.robot.common.ApiResult;import org.hibernate.validator.constraints.NotBlank;import org.springframework.validation.annotation.Validated;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;/** * Created by lancer Song on 2017-06-08. */@RequestMapping("/demo")@Validatedpublic class Demo { @RequestMapping(value = "",method = RequestMethod.GET) public ApiResult<String> testValid(@NotBlank(message = "param1参数不能为空") String param1, @NotBlank(message = "param2参数不能为空") String param2){ return ApiResult.success(); }}
通用异常捕获类:
/** * Created by lancer Song on 2017-03-31. * 统一捕获异常类 */@ControllerAdvice@ResponseBodypublic class BaseExceptionHandler { private static final Logger logger = LoggerFactory.getLogger(BaseExceptionHandler.class); /** * 400 - Bad Request * @param e * @return */ @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(ConstraintViolationException.class) public ApiResult handleServiceException(ConstraintViolationException e) { logger.error("错误的请求参数", e); Set<ConstraintViolation<?>> violations = e.getConstraintViolations(); ConstraintViolation<?> violation = violations.iterator().next(); String message = violation.getMessage(); return ApiResult.fail("parameter:" + message); }}
可以减少很多手动重复的空校验,便于开发。
阅读全文
2 0
- spring基于java config的支持方法级别的参数校验
- Spring Validator方法级别的参数校验,方法界别参数校验的全局处理,Sping MVC使用Hibernate Validator,自定义校验器
- 基于Spring的Validation校验
- 五篇基于java config的spring security
- 基于java config的springSecurity(六)--集成spring session
- Spring in Action(五):基于Java Config的SpringMVC
- 基于java config的springSecurity(六)--集成spring session
- Spring API级别对AOP的支持
- spring-util-对参数校验的支持 org.springframework.util.Assert
- 基于java config的springSecurity(四)--启用全局方法安全
- 基于java config的springSecurity(四)--启用全局方法安全
- Spring AOP注解的方式校验参数
- 基于mysql的spring cloud config server
- Maven构建一个多模块的Spring Boot + Spring MVC项目,完全基于java config
- 一种基于流水线的视频文件校验方法
- Spring Web利用切面统一处理参数校验异常的方法
- java方法参数校验实践
- 基于注解和Aop的自动参数校验的实现
- C#控制格式符
- eclipse关闭Updating Error Reporting Database
- PHPCMS V9两步实现修改后台管理登陆路径方法分享
- SSD:Single Shot MultiBox Detector 详解
- Devops 前途无量
- spring基于java config的支持方法级别的参数校验
- HDU 5975 Aninteresting game ( lowbit理解 )
- 使用Pacemaker 实现Apache 的高可用
- java HttpServer构建http服务器
- 基于3dtiles做的视域分析
- 【剑指offer-解题系列(48)】求1+2+3+...+n
- java(第十章)--接口、继承和多态 ;
- 浏览器启动劫持
- vue遇到的坑