我制作了一个类似sample的项目。控制器就像这样
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
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.
我搜索了这个错误并找到this,我在项目中没有使用ContainerResponseFilter
,因为我提供了上面的示例。所以我一无所知。主要问题是如何处理所有扔掉的东西,但如果你能给我一些关于如何解决Providers
问题的建议,我将非常感激。
答案 0 :(得分:1)
在我的项目中,我使用@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);
}
}
答案 1 :(得分:0)