1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/qiujiayu-AutoLoadCache

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
use.md 6.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 00:26 77bc1ee

Использование

1. Maven dependency:

<dependency>
  <groupId>com.github.qiujiayu</groupId>
  <artifactId>autoload-cache</artifactId>
  <version>${version}</version>
</dependency>

2. AutoLoadConfig конфигурация (AutoLoadConfig.md)

3. Сериализатор:

Сериализаторы используются для глубокого и сложного преобразования данных в Java-объекты и обратно. В рамках фреймворка реализованы следующие сериализаторы:

  1. com.jarvis.cache.serializer.HessianSerializer — сериализация на основе Hessian2;
  2. com.jarvis.cache.serializer.JdkSerializer — сериализация с использованием JDK;
  3. com.jarvis.cache.serializer.FastjsonSerializer — сериализация на базе Fastjson. При использовании Fastjson необходимо указывать конкретный тип возвращаемого значения, например, List, иначе будет ошибка.

Для сжатия данных перед отправкой в распределённый кэш-сервер можно использовать com.jarvis.cache.serializer.CompressorSerializer. Поддерживаются различные алгоритмы сжатия: GZIP, BZIP2, XZ, PACK200, DEFLATE (по умолчанию используется GZIP).

Если требуется использовать другие сериализаторы, можно реализовать интерфейс com.jarvis.cache.serializer.ISerializer.

<bean id="hessianSerializer" class="com.jarvis.cache.serializer.HessianSerializer" />
<bean id="jdkSerializer" class="com.jarvis.cache.serializer.JdkSerializer" />
<bean id="fastjsonSerializer" class="com.jarvis.cache.serializer.FastjsonSerializer" />

<bean id="hessianCompressorSerializer" class="com.jarvis.cache.serializer.CompressorSerializer">
  <constructor-arg ref="hessianSerializer" />
</bean>

4. Анализатор выражений

Кэш-ключи и некоторые условия взаимодействия с Java-объектами обрабатываются через выражения. Фреймворк включает встроенные анализаторы выражений Spring El и JavaScript: com.jarvis.cache.script.SpringELParser и com.jarvis.cache.script.JavaScriptParser. Для расширения функциональности необходимо наследовать от абстрактного класса com.jarvis.cache.script.AbstractScriptParser.

<bean id="scriptParser" class="com.jarvis.cache.script.SpringELParser" />

5. Конфигурация кэша

Фреймворк поддерживает три типа кэшей: Redis, Memcache и ConcurrentHashMap:

6. Обработчик кэша

<bean id="cacheHandler" class="com.jarvis.cache.CacheHandler" destroy-method="destroy">
  <constructor-arg ref="cacheManager" />
  <constructor-arg ref="scriptParser" />
  <constructor-arg ref="autoLoadConfig" />
  <constructor-arg ref="hessianSerializer" />
</bean>

7. AOP-конфигурация:

<bean id="cacheInterceptor" class="com.jarvis.cache.aop.aspectj.AspectjAopInterceptor">
  <constructor-arg ref="cacheHandler" />
</bean>
<aop:config proxy-target-class="true">
  <!-- Обработка @Cache AOP-->
  <aop:aspect ref="cacheInterceptor">
    <aop:pointcut id="daoCachePointcut" expression="execution(public !void com.jarvis.cache_example.common.dao..*.*(..)) &amp;&amp; @annotation(cache)" />
    <aop:around pointcut-ref="daoCachePointcut" method="proceed" />
  </aop:aspect>

  <!-- Обработка @CacheDelete AOP-->
  <aop:aspect ref="cacheInterceptor" order="1000"><!-- order 参数 контролирует приоритет уведомлений AOP, чем меньше значение, тем выше приоритет. После фиксации транзакции удаляет кэш -->
    <aop:pointcut id="deleteCachePointcut" expression="execution(* com.jarvis.cache_example.common.dao..*.*(..)) &amp;&amp; @annotation(cacheDelete)" />
    <aop:after-returning pointcut-ref="deleteCachePointcut" method="deleteCache" returning="retVal"/>
  </aop:aspect>

  <!-- Обработка @CacheDeleteTransactional AOP-->
  <aop:aspect ref="cacheInterceptor">
    <aop:pointcut id="cacheDeleteTransactional" expression="execution(* com.jarvis.cache_example.common.service..*.*(..)) &amp;&amp; @annotation(cacheDeleteTransactional)" />
    <aop:around pointcut-ref="cacheDeleteTransactional" method="deleteCacheTransactional" />
  </aop:aspect>
</aop:config>

При необходимости использования разных кэшей для разных данных можно настроить несколько AOP для разделения.

8. Перед использованием операций с кэшем добавьте аннотации @Cache и @CacheDelete

Дополнительные настройки см. в:

autoload-cache-spring-boot-starter, рекомендуется использовать этот стартер; Каталог test содержит примеры, которые можно запустить.

Пример кода Spring с конфигурацией на основе Spring XML; Пример кода spring boot.

Представленная конфигурация основана на Spring. Если вы используете Nutz, обратитесь к AutoLoadCache-nutz для получения инструкций.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/qiujiayu-AutoLoadCache.git
git@api.gitlife.ru:oschina-mirror/qiujiayu-AutoLoadCache.git
oschina-mirror
qiujiayu-AutoLoadCache
qiujiayu-AutoLoadCache
master