【发布时间】:2015-06-02 14:47:15
【问题描述】:
使用 spring-data-rest 来公开我想要覆盖默认异常处理的存储库。
阅读文档在我看来,最好的方法是使用 @ControllerAdvice 带注释的类
@ControllerAdvice
class GlobalControllerExceptionHandler extends ResponseEntityExceptionHandler {
Logger log = LoggerFactory.getLogger(GlobalControllerExceptionHandler.class);
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
@ExceptionHandler(Exception.class)
public ResponseEntity<Object> badRequest(HttpServletRequest req, Exception exception) {
log.info("++++ GLOBAL EXCEPTION HANDLING ++++");
return null;
}
}
有几点我不确定:
- 我应该扩展 ResponseEntityExceptionHandler,其他类,什么都没有?
- 我应该返回 ResponseEntity 对象,其他类吗?
顺便说一句,即使我尝试了不同的配置,这似乎也不起作用。有没有办法在 spring-data-rest 中自定义错误处理?
【问题讨论】:
-
“这似乎不起作用”是什么意思?抛出异常时是否没有调用 badRequest,或者您遇到了一些错误?
-
对不起...我的意思是 badRequest 没有被调用
-
你在使用@EnableAutoConfiguration吗?查看主要配置会很有帮助。也很好奇这个类是否与该配置在同一个包中,因为这个类是包私有的。
-
这个类在应用程序的一个子包中,因为我希望 spring 上下文扫描所有这些子包......我错了吗? ...顺便说一句,是的,我正在使用 EnableAutoConfiguration
-
对包进行组件扫描,但组件扫描不可见;在 java 中,你要么在同一个包中,要么不在——从可访问性的角度来看,确实没有“子包”这样的东西
标签: spring-boot spring-data-rest