前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring boot 中使用 hibernate validate 校验

spring boot 中使用 hibernate validate 校验

作者头像
潇洒
发布2019-07-03 11:30:42
8530
发布2019-07-03 11:30:42
举报
文章被收录于专栏:石头岛石头岛

spring boot 中使用 Hibernate validate 进行入参字段校验,一般用于web 接口入参校验,用起来非常方便。

spring boot 的配置

代码语言:javascript
复制

import org.hibernate.validator.HibernateValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;

import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;

@Configuration
public class ValidatorConfiguration {


    @Bean
    /**
     * Method:  开启快速返回
     * Description: 
     *          如果参数校验有异常,直接抛异常,不会进入到 controller,使用全局异常拦截进行拦截
     * Author: liu kai
     * Date: 2018/7/12 17:33
     * 
     * @param 
     * @return org.springframework.validation.beanvalidation.MethodValidationPostProcessor
     */
    public MethodValidationPostProcessor methodValidationPostProcessor() {
        MethodValidationPostProcessor postProcessor = new MethodValidationPostProcessor();
        /**设置validator模式为快速失败返回*/
        postProcessor.setValidator(validator());
        return postProcessor;
    }

    @Bean
    public Validator validator(){
        ValidatorFactory validatorFactory = Validation.byProvider( HibernateValidator.class )
                .configure()
                .addProperty( "hibernate.validator.fail_fast", "true" )
                .buildValidatorFactory();
        Validator validator = validatorFactory.getValidator();
        return validator;
    }
}

controller 中使用

使用步骤:

  1. 在 controller 类上 @Validated
  2. BindingResult result 这个不能省,必须要有,测试不加不行。
  3. @Valid 加上这个注解
代码语言:javascript
复制
@Validated
public class NewsInfoController {
    /**
 * Method:  添加新闻
 * Description:
 * Author: pan ying
 * Date: 2018/6/13 17:43
 *
 * @param newsRequestVo
 * @return com.reapal.openapi.web.vo.ResultVo
 */
@RequestMapping(value = "/save" ,method={RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public ResultVo saveNewsInfo(@RequestBody @Valid NewsRequestVo newsRequestVo, BindingResult result){
   ResultVo resultVo = new ResultVo();
   newsInfoBusiness.insert(newsRequestVo);
   return  resultVo;
}

实体类中使用

代码语言:javascript
复制
public class NewsInfo implements Serializable {
    private static final long serialVersionUID = 3148176768559230877L;
    

	/** id */
	private String id;
	/** 新闻编号 */
	private String newsNo;
	/** 标题 */
	@NotNull
	@Length(max=30, message="长度超过限制")
	private String title;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • spring boot 的配置
  • controller 中使用
  • 实体类中使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档