@JsonFilter, настройка и производительность - PullRequest
2 голосов
/ 20 марта 2012

Я разрабатываю 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);

Мои вопросы:

  1. Должен ли я использовать механизм ModelAndView (так как я манипулирую objectMapper для каждого запроса) или я могу каким-то образом уведомить пружину о моем желаемом фильтре и все еще заставлять его выполнять тяжелую работу?

  2. Является ли это решение целесообразным с точки зрения производительности, так как я думаю, что мне придется реконструировать filterProvider и фильтр для каждого запроса.

  3. Какую оптимизацию (если есть) Джексон пытается выполнить в отношении кеширования фильтра?

  4. Есть ли альтернативные пути, которые я должен попытаться найти в связи с вышеупомянутой проблемой?

1 Ответ

1 голос
/ 20 марта 2012

Я не знаю достаточно о Spring, чтобы знать о части ModelAndView, но я знаю достаточно о Джексоне, чтобы сказать, что производительность вряд ли будет проблематичной для фильтрации Джексона.Одна из причин, по которой подходы к фильтрации не так просты, заключается в том, что они пытаются сбалансировать удобство использования с производительностью - и поэтому JSON Views и Filters имеют очень низкие накладные расходы.

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