Java 如何在Spring引导中处理最大文件大小异常?
我使用SpringBootV1.2.5创建REST应用程序。在上载图像时,我检查了最大文件大小,该文件大小由属性提供:Java 如何在Spring引导中处理最大文件大小异常?,java,spring,spring-mvc,spring-boot,spring-restcontroller,Java,Spring,Spring Mvc,Spring Boot,Spring Restcontroller,我使用SpringBootV1.2.5创建REST应用程序。在上载图像时,我检查了最大文件大小,该文件大小由属性提供: multipart.maxFileSize= 128KB 在application.properties中。此功能由Spring Boot本身提供。现在检查正常了。问题是,我如何处理异常并向用户返回一条他能理解的消息 更新1---------- 我在控制器中编写了一个方法,打算在其中使用@ExceptionHandler处理MultipartException。它似乎不起作用
multipart.maxFileSize= 128KB
在application.properties中。此功能由Spring Boot本身提供。现在检查正常了。问题是,我如何处理异常并向用户返回一条他能理解的消息
更新1----------
我在控制器中编写了一个方法,打算在其中使用@ExceptionHandler
处理MultipartException。它似乎不起作用
这是我的代码:
@ExceptionHandler(MultipartException.class)
@ResponseStatus(value = HttpStatus.PAYLOAD_TOO_LARGE)
public ApplicationErrorDto handleMultipartException(MultipartException exception){
ApplicationErrorDto applicationErrorDto = new ApplicationErrorDto();
applicationErrorDto.setMessage("File size exceeded");
LOGGER.error("File size exceeded",exception);
return applicationErrorDto;
}
更新2----------
在@luboskrnac指出这一点后,我终于想出了一个解决方案。我们可以在这里使用ResponseEntityExceptionHandler
来处理这种特殊情况。我相信,我们也可以使用DefaultHandlerExceptionResolver
,但是ResponseEntityExceptionHandler
将允许我们返回ResponseEntity
,而前者的方法将返回ModelAndView
。不过我还没有试过
这是我用来处理多端口异常的最后一个代码:
@ControllerAdvice
public class CustomResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
private static final Logger LOGGER = Logger.getLogger(CustomResponseEntityExceptionHandler.class);
@ExceptionHandler(MultipartException.class)
@ResponseStatus(value = HttpStatus.PAYLOAD_TOO_LARGE)
@ResponseBody
public ApplicationErrorDto handleMultipartException(MultipartException exception){
ApplicationErrorDto applicationErrorDto = new ApplicationErrorDto();
applicationErrorDto.setMessage("File size exceeded");
LOGGER.error("File size exceeded",exception);
return applicationErrorDto;
}
}
我正在使用Swagger开发/记录RESTAPI。这是上载超过大小的文件时的响应。
谢谢。:
您还可以使用常规的Spring MVC功能,如@ExceptionHandler
方法和@ControllerAdvice
。然后,ErrorController
将拾取
任何未处理的异常
由于在@Controller/@ExceptionHandler/@ControllerAdvice
功能发挥作用之前,MultipartException
似乎已经出现,您应该使用ErrorController
来处理它
顺便说一句,我找到了这个。你可能想看看。我试过了。我尝试使用ExceptionHandler在控制器中本地处理异常,而不是按照您共享的文档中的说明,使用ControllerAdvice进行全局包装。我正在尝试在方法中处理MultipartException。它似乎不起作用@卢博斯克纳克请检查更新1。我之前错了,并更正了我的答案。您想使用ErrorController。谢谢您指出。我已经用我正在使用的最终解决方案更新了我的帖子。@luboskrnac如果我使用@RestController怎么办?我不想返回页面-只是object@gstackoverflow好吧,这没什么区别。