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 не похож на сервис и не должен быть одиночным. Вместо этого он должен быть создан всякий раз, когда создается исключение. Я никогда не работал с этим классом, извините, не могу дать вам совет, как это сделать.

Другие вопросы по тегам