我有定义
@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
my ExceptionHandler
工作正确。
问题是什么?我想把我的ExceptionHandler
仅仅用于课堂MyClass
。
使用@Controller
注释而不是@ControllerAdvice
,因为使用@ExceptionHandler
,最后一个只能用于所有控制器(所以没有basePackageClasses = MyClass.class
)
我通过将处理程序包添加到springboot扫描中来解决此问题。
@SpringBootApplication(scanBasePackages = "your.handler.package")
如果您使用的是spring boot,请注意,默认情况下,spring boot仅扫描引导类的包和子包下的bean。
因此,如果使用@ControllerAdvice注释的处理程序不在任何这些包中,则必须手动将其包添加到扫描中。