我有一个与RestControllerAdvice有关的问题。 我已经建立了一个内部jar文件作为自己的库,并实现了一些异常处理程序。 无论如何,当抛出异常错误时,RestControllerAdvice无法正常工作。
@RestControllerAdvice
public class ApiControllerHandler {
@ExceptionHandler(ApiException.class)
public @ResponseBody
ApiResponse handleApiRequestException(ApiException e) {
ApiResponse response = new ApiResponse();
response.setCode(e.response.getCode());
response.setMessage(e.response.getMessage());
return response;
}
}
public static void request(JSONObject jsonReq, String requestKey) throws ApiException{
if (requestKey.isEmpty()) {
throw new ApiException("01", "Please input request validate key");
}
String key = jsonReq.getString(requestKey);
if (StringUtils.isEmpty(key)) {
throw new ApiException("01", requestKey + " Can not be null or empty.");
}
}
@PostMapping("/")
public String index(@RequestBody Map<String, Object> map){
JSONObject jsonObject = new JSONObject(map);
SPNValidator.request(jsonObject, "username");
return "Hello";
}
{
"username" : ""
发布此请求时,将引发异常,因为我已经处理了请求,该请求既不为空也不为null 但是我的restControlleradvise无法正常工作,它引发内部异常错误。
注意:如果我使用相同的项目,它会正常工作, 但是当构建为jar文件供其他使用时,此功能不起作用。
谢谢。
答案 0 :(得分:0)
可能的原因之一
@RestControllerAdvice
无法正常工作的原因< / li>
要解决此问题,请在@ComponentScan
中使用您的内部JAR pacakge名称
像下面一样
@ComponentScan(basePackages = {"com.exception.base"})
因此spring在扫描项目文件时将包含ApiControllerHandler
。