package com.jarvis.cache.annotation;
import java.lang.annotation.Documented;
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;
/**
* 对@Cache进行扩展,实现一次请求生成多个缓存数,减少与DAO的交互次数
* @author jiayu.qiu
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
@Documented
public @interface ExCache {
/**
* 缓存的过期时间,单位:秒,如果为0则表示永久缓存
* @return 时间
*/
int expire();
/**
* 动态获取缓存过期时间的表达式
* @return 时间
*/
String expireExpression() default "";
/**
* 自定义缓存Key,支持表达式
* @return String 自定义缓存Key
*/
String key();
/**
* 设置哈希表中的字段,如果设置此项,则用哈希表进行存储,支持表达式
* @return String
*/
String hfield() default "";
/**
* 缓存的条件表达式,返回 true 或者 false,只有为 true 才进行缓存
* @return String
*/
String condition() default "";
/**
* 通过表达式获取需要缓存的数据,如果没有设置,则默认使用 #retVal
* @return 缓存对象
*/
String cacheObject() default "";
}