All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.aqiu202.cache.anno.EnableTtlCaching Maven / Gradle / Ivy

There is a newer version: 1.2.0
Show newest version
package com.github.aqiu202.cache.anno;

import com.github.aqiu202.cache.config.TtlCacheConfigRegistrar;
import com.github.aqiu202.ttl.data.StringTtlCache;
import com.github.aqiu202.ttl.data.TtlCache;
import com.github.aqiu202.ttl.data.impl.CaffeineCache;
import com.github.aqiu202.ttl.data.impl.GuavaCache;
import com.github.aqiu202.ttl.data.impl.RedisCache;
import com.github.aqiu202.ttl.data.str.StringCaffeineCache;
import com.github.aqiu202.ttl.data.str.StringGuavaCache;
import com.github.aqiu202.ttl.data.str.StringRedisCache;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;
import org.springframework.context.annotation.Import;
import org.springframework.core.annotation.AliasFor;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(TtlCacheConfigRegistrar.class)
public @interface EnableTtlCaching {

    enum CacheMode {

        redis(RedisCache.class, StringRedisCache.class),
        guava(GuavaCache.class, StringGuavaCache.class),
        caffeine(CaffeineCache.class, StringCaffeineCache.class),
        none(null, null);

        private final Class stringCacheClass;
        private final Class cacheClass;

        CacheMode(Class cacheClass,
                Class stringCacheClass) {
            this.cacheClass = cacheClass;
            this.stringCacheClass = stringCacheClass;
        }

        public Class getStringCacheClass() {
            return this.stringCacheClass;
        }

        public Class getCacheClass() {
            return this.cacheClass;
        }

    }

    @AliasFor("cacheMode")
    CacheMode value() default CacheMode.caffeine;

    @AliasFor("value")
    CacheMode cacheMode() default CacheMode.caffeine;

    /**
     * 缓存超时时间
     *
     * @return 缓存超时时间
     */
    long timeout() default 3600;

    /**
     * 时间单位
     *
     * @return 时间单位
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy