1

我做了一个像这个示例这样的项目。所以控制器是这样的

package mypackagename.controller;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;

@RestController
@RequestMapping("/")
public class StoresRestController {

    @RequestMapping(method = RequestMethod.GET)
    public String stores() {
        return ...
    }

}

我喜欢处理所有的 throwable 并做出我定制的统一响应。问题是我找不到正确执行此操作的指南或示例。

首先,我尝试ExceptionHandler了 , with Throwable,但没有成功,所以我决定继续。然后,我发现最接近的方法是this,所以我尝试了 jersey,添加了类似this的内容。但它并不适用于所有的投掷物。此外,它通过抱怨无视我的控制器

o.g.jersey.internal.inject.Providers     : A provider mypackagename.controller.StoresRestController registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider mypackagename.controller.StoresRestController will be ignored. 

我搜索了这个错误并找到了这个,我没有ContainerResponseFilter在我的项目中使用它,因为我提供了上面的示例。所以我一无所知。主要问题是如何处理所有 throwables,但如果你能给我一些关于如何解决Providers问题的建议,我将不胜感激。

4

2 回答 2

2

在我的项目中,我使用 @ControllerAdvice 来处理我的异常。这是一个例子。希望这可以帮助。只需确保此类在您的组件扫描中,以便它被拾取。

@RestController
@ControllerAdvice
public class StoresExceptionHandler {

    @ExceptionHandler(Throwable.class)
    public ResponseEntity<Object> handleThrowable(final Throwable ex) {
        return new ResponseEntity<Object>("Unable to process request.", HttpStatus.INTERNAL_SERVER_ERROR);
    }
}
于 2017-03-20T17:07:55.453 回答
0

最后这篇文章帮助我处理了所有Throwable的,除了身份验证异常。重要的部分是使用@EnableWebMvcResponseEntityExceptionHandler。为了处理身份验证异常,我使用了这个答案。希望它对某人有所帮助。

于 2017-03-19T22:20:06.367 回答