zalando problem-spring-web генерирует нежелательную трассировку стека - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь реализовать RFC 7807 в своем проекте Spring Boot, используя zalando problem-spring-web https://github.com/zalando/problem-spring-web

Я выполнил настройку в соответствии с этим руководством https://github.com/zalando/problem-spring-web/tree/master/problem-spring-web

Когда генерируется исключение, экземпляр Problem генерируется, но его сериализованная форма JSON не соответствует ожидаемой, особенно в том случае, когда трассировка стека включается, а это не следует.

После некоторой отладки кажется, что ProblemModule не зарегистрирован в ObjectMapper, который используется для сериализации проблемы (его метод setupModule никогда не вызывается). У меня сложилось впечатление, что объявления бина типа Module было достаточно, чтобы Spring взял его и зарегистрировал в ObjectMapper, но здесь этого не происходит.

Док говорит

Если вы хотите включить трассировку стека, настройте ПроблемаМодуль выглядит следующим образом:

ObjectMapper mapper = new ObjectMapper()
     .registerModule(new ProblemModule().withStackTraces());

, что, по-видимому, означает, что вам нужно создать собственный экземпляр ObjectMapper, но как убедиться, что он используется библиотекой при десериализации проблемы?

1 Ответ

0 голосов
/ 24 мая 2019

Так как я не могу заставить ObjectMapper зарегистрировать свои Module s, я решил, что должен был сделать это сам, поэтому я нашел решение, которое работает:

@Configuration
public class ProblemConfiguration implements InitializingBean {

    @Autowired
    ObjectMapper objectMapper;

    @Override
    public void afterPropertiesSet() {
        objectMapper.registerModules(
                new ProblemModule(),
                new ConstraintViolationProblemModule()
        );
    }
}

Еслиу кого-то есть идея, почему она не работает должным образом, я был бы рад услышать это:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...