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

com.xxelin.whale.annotation.Cached Maven / Gradle / Ivy

package com.xxelin.whale.annotation;

import com.xxelin.whale.enums.CacheType;

import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * @author ElinZhou [email protected]
 * @version $Id: Cached.java , v 0.1 2019-07-31 11:44 ElinZhou Exp $
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
@Inherited
public @interface Cached {

    String nameSpace() default "";

    /**
     * 缓存id,用来作为缓存的key,根据此字段查询缓存
     * 不设置此值时将所有参数通过json序列化作为key
     * 如果需要使用自定义key,请使用SpEL表达式
     *
     * @return
     */
    String idExpress() default "";

    long expire() default -1;

    TimeUnit timeUnit() default TimeUnit.SECONDS;

    long localExpire() default -1;

    CacheType type() default CacheType.LOCAL;

    int sizeLimit() default Integer.MAX_VALUE;

    boolean consistency() default false;

    boolean cacheNull() default false;

    /**
     * 使用SpEL表达式,如果表达式返回true,则使用缓存(如果命中);如果表达式返回false,就直接回源数据
     *
     * @return
     */
    String condition() default "";

    /**
     * 同name字段
     * @return
     */
    String value() default "";

    /**
     * 方法名称
     * 如果不指定此值,则无法手动失效缓存
     *
     * @return
     */
    String name() default "";


    /**
     * 是否启用缓存
     *
     * @return
     */
    boolean enable() default true;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy