Spring @Cacheable 的key生成
来源:互联网 发布:三端口网络的s参数 编辑:程序博客网 时间:2024/05/15 05:29
自定义策略是指我们可以通过Spring的EL表达式来指定我们的key。这里的EL表达式可以使用方法参数及它们对应的属性。使用方法参数时我们可以直接使用“#参数名”或者“#p参数index”。下面是几个使用参数作为key的示例。
@Cacheable(value="users", key="#id")
public User find(Integer id) {
returnnull;
}
@Cacheable(value="users", key="#p0")
public User find(Integer id) {
returnnull;
}
@Cacheable(value="users", key="#user.id")
public User find(User user) {
returnnull;
}
@Cacheable(value="users", key="#p0.id")
public User find(User user) {
returnnull;
}
除了上述使用方法参数作为key之外,Spring还为我们提供了一个root对象可以用来生成key。通过该root对象我们可以获取到以下信息。
属性名称
描述
示例
methodName
当前方法名
#root.methodName
method
当前方法
#root.method.name
target
当前被调用的对象
#root.target
targetClass
当前被调用的对象的class
#root.targetClass
args
当前方法参数组成的数组
#root.args[0]
caches
当前被调用的方法使用的Cache
#root.caches[0].name
当我们要使用root对象的属性作为key时我们也可以将“#root”省略,因为Spring默认使用的就是root对象的属性。如:
@Cacheable(value={"users","xxx"}, key="caches[1].name")
public User find(User user) {
returnnull;
}
如果要调用当前类里面的方法
@Override @Cacheable(value={"TeacherAnalysis_public_chart"}, key="#root.target.getDictTableName() + '_' + #root.target.getFieldName()") public List<Map<String, Object>> getChartList(Map<String, Object> paramMap) { } public String getDictTableName(){ return ""; } public String getFieldName(){ return ""; }
要调用的方法要是public的。
- Spring @Cacheable 的key生成
- Spring @Cacheable 的key生成
- spring @Cacheable的用法
- Spring缓存机制的理解 @Cacheable
- Spring 缓存注解@Cacheable的用法
- Spring 缓存注解@Cacheable的用法
- Spring 缓存注解@Cacheable的用法
- Spring 缓存注解@Cacheable的用法
- Spring @cacheable注解实现的缓存
- Spring注解@Cacheable、@CachePut、@CacheEvict的使用
- Spring 缓存注解@Cacheable的用法
- Spring-Redis Cacheable中文翻译
- 关于spring 的@cacheable 注解 无法生效的问题
- 使用spring自带的Cacheable注解处理Redis缓存
- 理一理ehcache-spring-annotations缓存的Key生成
- Spring 3.1 中使用 @Cacheable
- @Cacheable
- Redis与spring整合缓存的业务场景使用方法二(使用注解@Cacheable@CacheEvict)
- hdu 2156 分数矩阵
- 查看Firefox浏览器缓存地址
- iOS 多线程 GCD
- 在TextView里面设置字体粗体
- 生命游戏
- Spring @Cacheable 的key生成
- 两个栈实现队列(完整理解)
- 各种排序算法的大集合
- Android学习【7】manifest文件讲解
- 关于static的问题
- linux下常用命令以及文件
- stopPropagation, preventDefault 和 return false 的区别
- 正能量
- LintCode | Easy | 二分查找 | Binary Search