<dependency>
<groupId>com.github.qiujiayu</groupId>
<artifactId>autoload-cache</artifactId>
<version>${version}</version>
</dependency>
Сериализаторы используются для глубокого и сложного преобразования данных в Java-объекты и обратно. В рамках фреймворка реализованы следующие сериализаторы:
Для сжатия данных перед отправкой в распределённый кэш-сервер можно использовать 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>
Кэш-ключи и некоторые условия взаимодействия с 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" />
Фреймворк поддерживает три типа кэшей: Redis, Memcache и ConcurrentHashMap:
<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>
<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..*.*(..)) && @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..*.*(..)) && @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..*.*(..)) && @annotation(cacheDeleteTransactional)" />
<aop:around pointcut-ref="cacheDeleteTransactional" method="deleteCacheTransactional" />
</aop:aspect>
</aop:config>
При необходимости использования разных кэшей для разных данных можно настроить несколько AOP для разделения.
Дополнительные настройки см. в:
autoload-cache-spring-boot-starter, рекомендуется использовать этот стартер; Каталог test содержит примеры, которые можно запустить.
Пример кода Spring с конфигурацией на основе Spring XML; Пример кода spring boot.
Представленная конфигурация основана на Spring. Если вы используете Nutz, обратитесь к AutoLoadCache-nutz для получения инструкций.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )