我有定义
@ControllerAdvice(basePackageClasses = MyClass.class)
public class MyClassExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(value = { MultipartException.class, FileUploadBase.FileSizeLimitExceededException.class })
@ResponseBody
protected ResponseEntity<Object> maximumFileSizeLimitExceeded(RuntimeException ex, WebRequest request) {
String bodyOfResponse = "message";
return new ResponseEntity<>(new RestErrorInfo(ex, bodyOfResponse), HttpStatus.BAD_REQUEST);
}
}
如果我@ControllerAdvice(basePackageClasses = MyClass.class)
我的ExceptionHandler
无法正常工作。
如果我的@ControllerAdvice
工作正常ExceptionHandler
,那么
有什么问题?我想将ExceptionHandler
仅用于课程MyClass
。
答案 0 :(得分:0)
使用@Controller
注释而不是@ControllerAdvice
,因为@ExceptionHandler
最后一个注释只能用于所有控制器(所以没有basePackageClasses = MyClass.class
)
答案 1 :(得分:0)
我通过将处理程序的程序包添加到springboot扫描中解决了此问题。
@SpringBootApplication(scanBasePackages = "your.handler.package")
如果您使用的是Spring Boot,请注意,默认情况下,Spring Boot仅扫描bootstrap类的包和子包下的bean。
因此,如果您使用@ControllerAdvice注释的处理程序不在这些软件包中,则必须手动将其软件包添加到扫描中。