Допустим, у меня есть два ресурса, и оба возвращают JSON. Для request1 я хочу использовать jackson mixin для подготовки возвращенного JSOn. Для request2 я не хочу использовать какие-либо микшины.Spring MVC/Jackson: Reset objectMapper после завершения
Вопрос: Как сбросить смесины после запроса1? Объект mapper является весной фасоль/singleton.
Код:
@ResponseBody
public Something getSomething1(..) {
..
objectMapper.addMixIn(Something.class, MyMixin.class);
return obj;
}
@ResponseBody
public Something getSomething2(..) {
..
return obj;
}
Конечно, я могу сбросить на Примеси в getSomething2() и во всех других методах в начале, но я скорее хочу сделать это после сдачи в getSomething1. Поэтому метод, который модифицировал objectMapper, должен отменить его изменения.
EDIT: Как упоминалось в JBNizet, это не является потокобезопасным. Кто-нибудь знает лучший способ использования джексон-миксинов только в одном методе?
У меня нет хорошего решения, но ваше желаемое решение было бы неправильным: ObjectMapper - это singleton, используемый всеми контроллерами, и запросы обрабатываются одновременно несколькими контроллерами или несколькими способами такой же контроллер. –
@JBNizet Я согласен. Но знаете ли вы, как использовать эти миксины лучше всего в одном методе? – NoobieNoob
За исключением создания и настройки собственного экземпляра ObjectMapper и сериализации тела ответа явно с использованием этого модуля отображения, нет. Альтернативой может быть использование представления JSON, как описано здесь: https://spring.io/blog/2014/12/02/latest-jackson-integration-improvements-in-spring. Или просто превратить свое Кое-что в объект, который имеет правильную структуру. –