У меня есть объект пользовательского интерфейса, который обертывает объект JPA, и в конструкторе этого объекта пользовательского интерфейса я выполняю ленивую загрузку некоторых свойств. В том же конструкторе мне нужно знать, какой JsonView в данный момент активен, поэтому я не лениво загружаю некоторые поля, которые не нужны, если, скажем, это представление списка. Есть ли способ узнать из конструктора, что является текущим активным JsonView во время выполнения. Или есть другой способ добиться того, что я описал выше.
Мой текущий план создать собственный сериализатор, который во время сериализации будет вызывать setJsonView(Class jsonView) объекта, который он сериализует. Все мои сериализованные объекты должны будут поддерживать этот метод. Внутри этого метида я могу выполнять ленивую загрузку на основе уже известного представления json. Что-то вроде этого:
public class JsonViewSerializer extends JsonSerializer<BaseSerializableEntity> {
@Override
public void serialize(BaseSerializableEntity value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
value.setJsonView(provider.getSerializationView());
// need to pass serialization to base class...
}
}