我已经为我的一个spring控制器编写了自定义异常处理程序类,以验证来自请求参数的电子邮件属性是否是正确的格式。因此创建了一个扩展ResponseEntityExceptionHandler
类的新类,并用@ExceptionHandler
编写了一个方法。
但在spring boot应用程序启动期间,我得到了以下异常,即停止运行我的项目。有人能帮我解决这个问题吗?
服务器启动过程中的异常:
org.springframework.beans.factory.BeanCreationException:创建类路径资源[org/springframework/boot/autociguration/web/servlet/webmvcautoconfiguration$enablewebmvcconfiguration.class]中定义的名称为“Handler ExceptionResolver”的bean时出错:通过工厂方法实例化bean失败;
嵌套异常为org.springframework.web.servlet.handlerExceptionResolver:实例化ion(java.lang.exception,org.springframework.web.context.request.webrequest)抛出java.lang.exception}
用于处理MethodArgumentNotValidexception
的自定义类:
@ControllerAdvice
public class ExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public ErrorVO processValidationError(MethodArgumentNotValidException ex) {
BindingResult result = ex.getBindingResult();
List<FieldError> fieldErrors = result.getFieldErrors();
FieldError fieldError = fieldErrors.get(0);
ErrorVO dto = new ErrorVO(fieldError.getDefaultMessage());
return dto;
}
}
这种歧义是因为您在类-ResponseEntityExceptionHandler和MethodArgumentNotValidexception中都有相同的方法-@ExceptionHandler。您需要如下编写重写的方法来解决这个问题-
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,
HttpHeaders headers, HttpStatus status, WebRequest request) {
String errorMessage = ex.getBindingResult().getFieldErrors().get(0).getDefaultMessage();
List<String> validationList = ex.getBindingResult().getFieldErrors().stream().map(fieldError->fieldError.getDefaultMessage()).collect(Collectors.toList());
LOGGER.info("Validation error list : "+validationList);
ApiErrorVO apiErrorVO = new ApiErrorVO(errorMessage);
apiErrorVO.setErrorList(validationList);
return new ResponseEntity<>(apiErrorVO, status);
}
我想使用@Valid注释和@RequestBody注释,并在我自己的方法中处理错误,这些方法用@ExceptionHandler注释注释。我希望总是返回ReponseEntity的实例。但是当我为MethodArgumentNotValidException创建ExceptionHandler时,我无法启动我的应用程序。我的控制器如下所示: 对于另一种类型的异常,一切都能正常工作,但我不能为Met
太多错误了... 由:java.lang.IllegalStateException引起:发现了不明确的映射。无法将“Position WS”bean方法public java.util.list by.ipps.accounting.ws.positionws.getEmployeePost(java.lang.long)映射到{[/positionlistjson/{id}]、methods=
使用spring-boot时,一切工作都很好。尽管如此,在spring-boot中已删除了注释和。我试图将代码重构为新版本,但我做不到。对于以下测试,我的应用程序在测试之前没有启动,http://localhost:8080返回404: 如何重构测试以使其在Spring-Boot1.5中工作?
我的程序编译了所有内容,我没有出错,但我实际上期望tomcat应该永久在端口8080上。输出中也没有Spring。在另一个项目中,我做的一切都很好。谢谢你帮助我。 我的父母: 我的tarter.class: 我的Starter-Pom: 控制台输出: 然后什么都不会发生了。谢谢你的帮助。
我有两种将实体映射到域的方法。 当我试图定义实体列表到域的映射方法时,我发现了用于映射集合元素的模糊映射方法。 有没有一种方法可以定义用于映射对象集合的方法
我在stackoverflow上发现了类似的问题,并试图用这种方式(LINK)解决这个问题,但在我的项目中没有起作用。谁能给我一些建议吗? pom.xml 应用属性