我的处理程序在春季启动时出现异常,没有捕获异常



我有我的处理程序异常,我的控制器和我为我的控制器的主体请求应用javax验证。但是,当我的主体请求的一个属性不符合验证配置时,我的处理程序不会捕获我的MethodArgumentNotValidateException。我没有在我的项目中重复@ControllerAdvice。也许Spring没有正确加载我的组件?

我的控制器:

@RestController
@RequestMapping("/consents")
public class ConsentsController {

@PostMapping(path="/altaConsentimientos")
public CompletableFuture<ResponseEntity<OutAltaConsentimientos>> postAltaConsentimiento(@Valid @RequestBody InAltaConsentimientos inDto) throws Exception{
System.out.print("Hola esto es una prueba");
//  throw new Exception();
return null;
}
}

我的InAltaConstimientos:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class InAltaConsentimientos implements Serializable{
private static final long serialVersionUID = 1L;
@NotBlank(message ="usuario_id is mandatory")
@Email(message ="usuario_id is mandatory")
@JsonProperty("usuario_id")
private String id;
@NotBlank(message ="usuario_nombre is mandatory")
@JsonProperty("usuario_nombre")
private String nombre;
@NotBlank(message ="usuario_apellidos is mandatory")
@JsonProperty("usuario_apellidos")
private String apellidos;
@NotBlank(message ="usuario_email is mandatory")
@JsonProperty("usuario_email")
private String email;
@NotBlank(message ="consentimiento_fecha is mandatory")
@JsonProperty("consentimiento_fecha")
private String fechaDelConsentimiento;
@NotBlank(message ="consentimiento_tipo is mandatory")
@JsonProperty("consentimiento_tipo")
private String tipoConsentimiento;
@NotBlank(message ="consentimiento_valor is mandatory")
@JsonProperty("consentimiento_valor")
private String valorConsentimiento;
}

我的处理程序异常:

@ControllerAdvice
public class HandleValidationExceptions {
Logger logger = LoggerFactory.getLogger(HandleValidationExceptions.class);
@ResponseStatus(HttpStatus.NOT_FOUND)
@ExceptionHandler({MethodArgumentNotValidException.class,Exception.class})
@ResponseBody
public ErrorMessage handleValidationExceptions(MethodArgumentNotValidException exception) {
//          String message=exception.getBindingResult().getAllErrors().stream()
//          .map(fieldError -> fieldError.getDefaultMessage()).collect(Collectors.joining(", "));
//  
//  logger.error(message, exception);
return new ErrorMessage(exception, "Malformed parameter: ");
//ResponseEntity<?> response = HttpStatus.FORBIDDEN;

//return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Campos malformateados");
}
}

My Boot应用程序类:

@SpringBootApplication(scanBasePackages={"es.","es.wsconsents","es.wsconsents.exceptions"})
//@ComponentScan({"es.servihabitat.consentimientos.api"})
public class ConsentsApplication {
public static void main(String[] args) {
SpringApplication.run(ConsentsApplication.class, args);
}
}

*我把我的处理程序异常包放在Boot类的@ScanPackage中

您已经提到在应用程序配置中添加了异常类的包,我认为问题是您没有将HandleValidationExceptions或其包添加到配置中。如果不附加完整的类和应用程序配置,我们就无法知道这一点。

最新更新