Spring JsonExceptionMapper Обработка ExceptionMapper.
Я получаю следующую ошибку в консоли weblogic при запуске сервера.
SEVERE: отсутствует зависимость для конструктора public com.test.mine.exception.JsonExceptionMapper(java.lang.String,com.fasterxml.jackson.core.JsonLocation) с индексом параметра 0 SEVERE: отсутствует зависимость конструктора public com.test.mine. exception.JsonExceptionMapper (java.lang.String, com.fasterxml.jackson.core.JsonLocation) с индексом параметра 1
Ниже мой код Java.
package com.test.mine.exception;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.core.JsonLocation;
import com.fasterxml.jackson.core.JsonParseException;
@Provider
@Service
public class JsonExceptionMapper extends JsonParseException implements ExceptionMapper {
public JsonExceptionMapper(String msg, JsonLocation loc) {
super(msg, loc);
// TODO Auto-generated constructor stub
}
private static final Logger LOGGER = LoggerFactory.getLogger(JsonExceptionMapper.class);
protected Logger getLogger() {
return LOGGER;
}
public Status getStatus(JsonParseException thr) {
return Status.BAD_REQUEST;
}
@Override
public Response toResponse(Throwable arg0) {
// TODO Auto-generated method stub
return Response.status(Status.BAD_REQUEST).type(MediaType.APPLICATION_JSON_TYPE).build();
}
}
2 ответа
Я столкнулся с подобной проблемой при настройке swagger для работы с Джерси. После поиска на разных форумах выяснилось, что для сканирования Джерси требуется конструктор без параметров. Я добавил конструктор, и он работал для меня.
Аннотация @Service сообщает Spring для создания синглтона аннотированного класса. При запуске Spring пытается создать этот экземпляр и предоставить необходимые аргументы конструктора String msg, JsonLocation loc, которые он не находит, поэтому исключение.
JsonExceptionMapper не похож на сервис и не должен быть одиночным. Вместо этого он должен быть создан всякий раз, когда создается исключение. Я никогда не работал с этим классом, извините, не могу дать вам совет, как это сделать.