Я разрабатываю REST API, который должен поддерживать дополнительную фильтрацию свойств на основе параметра запроса (на основе Spring MVC 3.0.x и Джексона).
То, что я пытаюсь реализовать, - это получить строковый параметр (в формате «fieldName1, fieldName2 ...»), отфильтровывать имена свойств, которые не разрешены, отфильтровывать имена свойств, которые не существуют, и добавление обязательных свойств.
Получив последнюю строку, я хочу использовать jackson @JSONFilter, чтобы отделить только нужные свойства, как это:
SimpleBeanPropertyFilter someFilter =
SimpleBeanPropertyFilter.filterOutAllExcept(builtString);
filterProvider =
new SimpleFilterProvider().addFilter("someGenericName",someFilter);
String pojoIntoJsonParse =
objectMapper.writer(filterProvider).writeValueAsString(pojo);
Мои вопросы:
Должен ли я использовать механизм ModelAndView (так как я манипулирую objectMapper для каждого запроса) или я могу каким-то образом уведомить пружину о моем желаемом фильтре и все еще заставлять его выполнять тяжелую работу?
Является ли это решение целесообразным с точки зрения производительности, так как я думаю, что мне придется реконструировать filterProvider и фильтр для каждого запроса.
Какую оптимизацию (если есть) Джексон пытается выполнить в отношении кеширования фильтра?
Есть ли альтернативные пути, которые я должен попытаться найти в связи с вышеупомянутой проблемой?