Java 如何在@cacheexecute#key中的SpEL中获取#root.args[0]字段 @服务 公共类用户服务{ 私有最终用户[]数据库=新用户[]{new User(0,“foo”)}; @可缓存(cacheNames=“springboot:demo:cache”,key=“#root.args[0]”) 公共用户查询(整数id){ 返回数据库[0]; } @cacheexecute(cacheNames=“springboot:demo:cache”,key=“#root.args[0].id”) 公共无效更新(用户){ 数据库[0]=用户; } } @数据 @AllArgsConstructor @诺尔格构装师 公共类用户实现可序列化{ 私有静态最终长serialVersionUID=-176035067940802739L; 整数id; 字符串名; }

Java 如何在@cacheexecute#key中的SpEL中获取#root.args[0]字段 @服务 公共类用户服务{ 私有最终用户[]数据库=新用户[]{new User(0,“foo”)}; @可缓存(cacheNames=“springboot:demo:cache”,key=“#root.args[0]”) 公共用户查询(整数id){ 返回数据库[0]; } @cacheexecute(cacheNames=“springboot:demo:cache”,key=“#root.args[0].id”) 公共无效更新(用户){ 数据库[0]=用户; } } @数据 @AllArgsConstructor @诺尔格构装师 公共类用户实现可序列化{ 私有静态最终长serialVersionUID=-176035067940802739L; 整数id; 字符串名; },java,spring,spring-boot,spring-el,Java,Spring,Spring Boot,Spring El,调用方法update后,从方法query生成的springboot:demo:cache:{id}仍存在于缓存(Redis)中。我应该怎么做才能准确地驱逐它?非常感谢。此代码很好,并按配置运行。您还可以输入键的方法参数名称。比如@Cacheable(cacheNames=“springboot:demo:cache”,key=“#id”)和@cacheexecut(cacheNames=“springboot:demo:cache”,key=“#user.id”)如果您觉得它不起作用,请提供更多

调用方法
update
后,从方法
query
生成的
springboot:demo:cache:{id}
仍存在于缓存(Redis)中。我应该怎么做才能准确地驱逐它?非常感谢。

此代码很好,并按配置运行。您还可以输入键的方法参数名称。比如@Cacheable(cacheNames=“springboot:demo:cache”,key=“#id”)和@cacheexecut(cacheNames=“springboot:demo:cache”,key=“#user.id”)如果您觉得它不起作用,请提供更多详细信息,例如您在何处以及如何测试它。Spring和Redis版本。您预期会发生什么?@GSSwain感谢您的回答。我仔细检查了我的演示,这确实是我自己编写的一个问题。