首页 > 其他分享 >spring @cacheable 注解使用spel表达式

spring @cacheable 注解使用spel表达式

时间:2024-09-19 16:26:18浏览次数:8  
标签:cacheable final spring method spel key authors root public

这里主要讲一下复杂的spel表达式,简单的不写了

解析集合

集合需要先自定义一个方法,比如getAuthorsName,然后在注解里通过root.target.getAuthorsName把方法引用进去

public class BookService {
    public String getAuthorsName(List<Author> authors) {
        return authors.stream().map(Author::getName).collect(Collectors.joining("-"));
    }

@Cacheable(value="bookservice", key="'findBook:'+#root.target.getAuthorsName(#authors)")
    public Book findBook(List<Author> authors){
        // your logic here
    }
}

顺便附上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

使用

@Component
public class CacheKeyGenerator 
  implements org.springframework.cache.interceptor.KeyGenerator {

    @Override
    public Object generate(final Object target, final Method method, 
      final Object... params) {

        final List<Object> key = new ArrayList<>();
        key.add(method.getDeclaringClass().getName());
        key.add(method.getName());

        for (final Object o : params) {
            key.add(o);
        }
        return key;
    }
}

@Cacheable(value="bookservice",keyGenerator="cacheKeyGenerator")
    public Book findBook(List<Author> authors){
        // your logic here
    }
}

标签:cacheable,final,spring,method,spel,key,authors,root,public
From: https://www.cnblogs.com/leecoder5/p/18420856

相关文章

  • mysql事务隔离级别和spring事务传播机制
    一、事务并发会出现的三个问题数据库事务具有ACID4个特性:A:Atomic,原子性,将所有SQL作为原子工作单元执行,要么全部执行,要么全部不执行;C:Consistent,一致性,事务完成后,所有数据的状态都是一致的,即A账户只要减去了100,B账户则必定加上了100;I:Isolation,隔离性,如果有多个事务并发执行,每个......
  • Spring Cloud Gateway CORS 方案
    问题在SpringCloud项目中,前后端分离目前很常见,在调试时,会遇到两种情况的跨域:前端页面通过不同域名或IP访问微服务的后台,例如前端人员会在本地起HttpServer直连后台开发本地起的服务,此时,如果不加任何配置,前端页面的请求会被浏览器跨域限制拦截,所以,业务服务常常会添加如下代码设置......
  • mybatis 通过工厂模式将mapper接口的代理对象注入spring容器中
    MapperFactoryBean是MyBatis框架中用于创建Mapper对象的一个工厂类。getObject方法是该工厂类中的一个关键方法,用于返回实际的Mapper对象。具体来说,MapperFactoryBean通过getObject方法来创建和初始化Mapper接口的实现,从而可以在Spring容器中注入和使用这些Mappe......
  • 第十一章 【后端】商品分类管理微服务(11.4)——spring-boot-devtools
    11.4spring-boot-devtools官网:https://docs.spring.io/spring-boot/reference/using/devtools.htmlSpringBootDevTools是SpringBoot提供的一组易于使用的工具,旨在加速开发和测试过程。它通过提供一系列实用的功能,如自动重启、实时属性更新、依赖项的热替换等,极大地......
  • springboot+vue音乐网站【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着互联网的飞速发展,音乐已成为人们日常生活中不可或缺的一部分。传统音乐获取方式如购买CD、磁带等逐渐淡出市场,取而代之的是更为便捷、多样的在线音乐服务。当前市场上虽已存在众多音乐网站,但它们在用户体验、歌曲分类的精细化、歌......
  • springboot+vue音乐网站【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,数字音乐已成为人们日常生活中不可或缺的一部分。音乐网站作为数字音乐传播的重要平台,不仅为用户提供了便捷的音乐获取渠道,还通过丰富的功能和个性化的服务,极大地丰富了人们的音乐体验。然而,当前市场上的音乐......
  • springboot+vue音乐网站【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着互联网的飞速发展,数字化娱乐已成为现代人生活中不可或缺的一部分,其中音乐作为跨越文化和国界的艺术形式,更是受到了广大网民的热烈追捧。传统的音乐获取方式如购买实体唱片或通过电视广播已难以满足用户对音乐资源多元化、即时化、......
  • springboot+vue音乐推荐系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着数字化时代的到来,音乐产业经历了前所未有的变革,音乐资源的海量化与获取途径的多样化使得用户在享受音乐盛宴的同时,也面临着信息过载的困扰。如何在浩如烟海的音乐库中快速找到符合个人喜好的音乐作品,成为了一个亟待解决的问题。音......
  • SpringBoot 整合 Activiti 实现工作流(项目代码分享)
    前言activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。一、项目形式springboot+vue+activiti集成了activiti在线编辑器,流行的前后端分离部署开发模式,快速开发平台,可插拔工作流服务。工......
  • springboot 博客交流平台-计算机毕业设计源码56406
    摘要博客交流平台作为一种重要的网络平台,为用户提供了展示自我、分享经验和与他人互动的空间。在国内外,研究者们关注博客交流平台的各个方面,并取得了显著的进展。研究内容主要包括用户体验和界面设计、社交化和互动性、多媒体内容支持、移动设备适配和跨平台体验、数据分析......