2009-07-28 3 views
1

Если у меня есть группа DAO с кучей методов getXXX, и я хочу, чтобы все или некоторые явные списки методов кэшировали, я могу сделать это прозрачно с помощью Spring?Что такое самый простой/самый прозрачный способ кеширования весной?

То, что я не хочу:

  • Чтобы изменить исходный код/​​добавить АННОТАЦИИ
  • вручную необходимо создать несколько прокси-бобов для ряда DAO-х и перемонтировать их всех.

Идеально что-то с регулярным выражением, чтобы соответствовать DAO и методу кэширования и автоматически обертывать себя вокруг DAO по мере необходимости.

Мы используем OSCache, поэтому пример с этим будет фантастическим.

ответ

0

Spring AOP - это то, что вы хотите, я думаю. Это даст вам возможность автоматически создавать прокси-объекты для ваших DAO, не проводя их вручную.

Это сложная тема, поэтому я предлагаю вам read the relevant section документов Spring. Однако, как идея начать работу, BeanNameAutoProxyCreator может быть вам полезен. Материал AspextJK - это полноценный подход AOP, но это довольно страшно. Основанный на Схеме подход АОП является более простым, но менее гибким.

Одним из центральных догматов Spring Framework является то, что не-инвазивности; это идея о том, что вы не должны быть принуждены к ввести классы, специфичные для конкретной инфраструктуры , и интерфейсы в вашей бизнес-модели домена . Однако, в некоторых местах Spring Framework делает даст вам возможность представить Spring Framework специфичных зависимости в ваш код: обоснование в дает вам такие варианты, потому что в определенных ситуациях это может быть просто равниной проще прочитайте или скопируйте конкретную часть функциональности в таким образом. Spring Framework (почти) всегда предлагает вам выбор : у вас есть свобода сделать обоснованное решение, в отношении которого вариант наилучшим образом подходит для вашего конкретного использования. случай или сценарий.

Один такого выбора, который имеет отношение к этой глава является то, что из них АОП рамка (и которые AOP стиль), чтобы выбрать . У вас есть выбор AspectJ и/или Spring AOP, и у вас также есть выбор либо подхода стиля аннотации @AspectJ , либо Spring-конфигурации . Дело в том, что эта главе выбирает ввести подход @ AspectJ стиля первой должна не быть принят как признак того, что весна команды благоприятствующей @ AspectJ подхода аннотации стиля по конфигурации стиля Spring XML.

См. Раздел, озаглавленный Раздел 6.4, «Выбор стиля декларации AOP , чтобы использовать« для более полного обсуждения whys и wherefores каждого стиля.

Что касается фактического кэширования, вам придется сделать это самостоятельно, но это должно быть простым, как только AOP-крючки интегрированы.

0

Вы можете попробовать кеширование, предоставленное Spring Modules. Это делает кэширование с помощью аспектов и поддерживает несколько кэширования решений, такие как OSCache, Ehcache, JBoss Cache и т.д.

1

Вы можете использовать @Cacheable аннотации и АОП аспектов от jcabi-aspects:

@Cacheable(lifetime = 5, unit = TimeUnit.SECONDS) 
public String load(URL url) { 
    return url.openConnection().getContent(); 
} 
Смежные вопросы