1.添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.6</version>
</dependency>
2.添加valid文件夹, 在resources下添加 validation和META-INF(资源见文末链接)注:spring.factories里边按项目实际路径修改
3.添加异常拦截ExceptionHandlerControllerAdvice
package com.tripg.controller;
import com.tripg.valid.ValidatorUtil;
import com.tripg.common.RequestResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@Slf4j
@ControllerAdvice(basePackageClasses = ExceptionHandlerControllerAdvice.class)
public class ExceptionHandlerControllerAdvice {
@ExceptionHandler(BindException.class)
@ResponseBody
RequestResult handleControllerValidateException(BindException ex) {
return new RequestResult(555, ValidatorUtil.getFirstMessage(ex.getBindingResult()));
}
@ExceptionHandler(Exception.class)
@ResponseBody
RequestResult handleOtherException(Exception ex) {
log.error("Controller层抛出异常", ex);
return new RequestResult(444);
}
}
4.测试
package com.tripg.controller;
import com.tripg.model.TestValid;
import com.tripg.webcommon.StandardResult;
import com.tripg.common.RequestResult;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.List;
@RestController
public class QueryController {
@Autowired
private HttpServletRequest request;
@GetMapping("testvalid")
public RequestResult test(@Valid TestValid test){
return StandardResult.Repack(new RequestResult());
}
}
package com.tripg.model;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotEmpty;
@Getter
@Setter
public class TestValid {
@NotEmpty(message = "测试属性")
String testname;
}
测试结果: