Переплетение времени компиляции с Cache Abstraction в Spring

В настоящее время я использую абстракцию кеша с использованием прокси. Проблема с прокси в том, что вызовы внутренних методов не работают. Теперь я хочу использовать переплетение времени компиляции вместо прокси-сервера, поскольку внутренние вызовы методов работают. Я искал в Google, но не нашел никакой существенной ссылки, которая объясняет, как использовать плетение во время компиляции. Есть много ссылок для плетения времени загрузки. Может ли кто-нибудь привести какой-либо пример плетения времени компиляции с абстракцией кеша или какой-либо соответствующей ссылкой?

Заранее спасибо.


person cooldude    schedule 12.04.2014    source источник


Ответы (1)


Вы можете добавить аспект Spring для кэширования с помощью плагина maven aspectj, указав класс аспекта и применив его вручную к нужным вам классам (проверьте внутри spring-aspects и spring-cache jars для аспекта).

Этот механизм напрямую не связан с пружиной, это можно сделать с любой стороной, не только с пружиной.

Причина, по которой он не используется, заключается в том, что это не очень удобно, потому что нам нужно знать классы, которые мы хотим посоветовать во время компиляции, и мы не можем полагаться на механизм сканирования аннотаций spring.

Плетение времени загрузки решает упомянутую вами проблему, заключающуюся в том, чтобы сделать повторные вызовы более прозрачными, без неудобств, связанных с переплетением времени компиляции. Плетение во время загрузки — это рекомендуемый способ, который Spring ввел в действие для использования плетения аспекта J, включенного аннотацией @EnableLoadTimeWeaving.

Для конкретного варианта использования, который вы упомянули, кажется, что нет хорошего случая для введения ткачества во время компиляции, в целом нет хорошего варианта использования для плетения во время компиляции, что объясняет отсутствие документации, доступной в Интернете.

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

person Angular University    schedule 13.04.2014
comment
Я создаю API. Он имеет много данных для возврата в ответ. В среднем около 200 КБ. Плетение времени загрузки повлияет на производительность API?? - person cooldude; 13.04.2014
comment
нет, я не думаю, что это повлияет на производительность, механизм ткачества времени загрузки будет выборочно советовать только классы Spring, которым нужны определенные аспекты, в большинстве случаев только классы @Service и @Repository. Это произойдет только один раз для класса службы/репозитория во время запуска сервера, и тогда аспекты будут на месте, и вы не заметите никакой разницы в производительности. - person Angular University; 13.04.2014