Концепция весеннего кеша
Начиная с пружины 3.1, предоставляется прозрачный способ добавления кэша к существующим приложениям для пружин, который используется как @Transaction. Существует слой абстракции между уровнем приложения и бэкэнд -хранилищем. Этот слой абстракции предназначен для инкапсуляции различных плановых бэкэнд -хранения (EHCache Guava Redis), чтобы минимизировать вторжение, вызванное кэшем для существующего бизнес -кода.
Технология кэширования весны также обладает значительной гибкостью. Он не только может использовать SPEL (язык выражения пружины) для определения клавиш кеша и различные условия, но и обеспечивает временные решения для хранения кэша, а также поддерживает интеграцию с основными профессиональными кэшами, такими как ehcache.
Его характеристики суммируются следующим образом:
Концепция дизайна
Как и другие услуги Spring Framework, Spring Cache сначала обеспечивает слой абстракции, и основная абстракция в основном отражается в двух интерфейсах.
org.springframework.cache.cache
org.springframework.cache.CacheManager
Кэш означает сам кэш
Cachemanager представляет собой обработку и управление кэшами и т. Д. Этот слой абстракции кэша разрабатывает использование кэша и заднего хранения кэша, так что в будущем можно легко заменить хранилище.
Использование пружинного кеша в трех шагах:
Объявить кеш
@Cachable ("books") public bookbook findbook (isbn isbn) {...} Использование очень простое. Добавьте @cachable и другие аннотации в метод, чтобы кэшировать результат метода.
Когда метод вызывается, сначала проверьте, есть ли какой -либо вызов к одному и тому же параметру в кэше для метода. Если это так, запрос из кеша и верните результат. Если нет, выполните конкретную логику метода и кэшируйте результат в кэше. Конечно, эта серия логики прозрачна для вызывающего абонента. Примечания для других операций кэша следующие (подробности см. В официальной документации):
Включите поддержку весеннего кеша
<Кэш: Аннотация, управляемый />
Или используйте метод аннотации @enablecaching
Настройка бэкэнд -хранилища кэша
Spring Cache обеспечивает несколько встроенных встроенных реализаций хранения бэкэнд: ниже приведены конкретные реализации Cachemanager.
Кроме того, данные Spring предоставляют два менеджера кэша:
Если вы используете распределенные кэши, такие как Memcached или Redis, вы можете реализовать кэш и кэхамангер сами и объявить его в контексте. Если требуется несколько различных реализаций кэша, различные кахманагеры могут быть инкапсулированы в комбинированном режиме.
Как генерируется кэшированный ключ
Мы все знаем, что метод хранения кэша, как правило, является ключевым значением. Итак, в Spring Cache, как набор ключей? Здесь нам нужно представить Keygenerator, который отвечает за стратегию генерации ключей, а по умолчанию - использовать SimpleKeyGenerator
Видно, что это хэш -значение упорядоченного массива параметров. Конечно, пользователи могут настроить стратегию ключевых поколений.
Реализация пружинного кеша
Выше приведено общее использование пружинного кеша, которое показывает, как реализована пружина.
При изучении исходного кода Spring, есть две вещи, которые нужно помнить:
Помните об этом, и легче понять механизм реализации и времени выполнения некоторых компонентов весной.
Весенний кеш не является исключением. Это типичная реализация Spring AOP. Весной AOP может быть просто понят как прокси (кроме аспекта). Мы заявляем, что класс @cachable Method будет оформлен, а в прокси -сервере реализуются кэшированный запрос и настройки операций.
Создание кеш -инфраструктуры
В предыдущей статье (обзор модуля Spring AOP) говорилась о том, что процесс создания Spring AOP, по сути, для реализации Beanpostprocessor, создания прокси в процессе создания бобов и связывания всех консультантов, применимых к бобам для прокси и в конечном итоге познакомить с контейнером.
Несколько ключевых концепций AOP Master в весенней консультации консультации
Консультации = поведение вставки в перехват раздела
pointcut = pointcut к разделу
Advisor = Advice + PointCut
Spring Cache также имеет аналогичные процессы, как и другие AOPS
Создать кеш -прокси
Линия перехвата кеша
Объект кэша прокси, сгенерированный в пружинном кэше, использует класс фабрики CacheProxyFactorybean. Вообще говоря, создание стандартного прокси в весне основано на ProxyFactoryBean. Здесь, чтобы более удобно обрабатывать логику кэша, Spring представляет CacheProxyFactoryBean, чтобы специфически представлять прокси, связанный с кэшем. Кэш прокси может обернуть целевые объекты и прокси -объекты, реализованные целевыми объектами.
Как видите, в CacheProxyFactorybean важным свойством является Cacheinterceptor. Этот класс является классом реализации Methodinterceptor. Ответственность этого класса состоит в том, чтобы выполнить конкретные операции кэша в целевом методе целевого объекта, который является обязанностью указанного выше совета.
Продолжить следовать, метод возврата выполнения является методом в родительском классе CheasepectSupport
В этом методе мы наконец -то обнаружим окончательную логику кеша операции
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.