Spring @方法参数的可缓存条件
我从springSpring @方法参数的可缓存条件,spring,spring-data,spring-el,Spring,Spring Data,Spring El,我从spring@Cacheable文档中读取() condition可以使用SpEL指定方法参数的条件 我一直在尝试同样的方法,但失败了。以下是我的方法: public static final String myStr = "4"; @Cacheable(condition="#!req.id.equals("+myStr+")") public Response myCall(Request req){} 这是我的请求POJO: public class Request{ privat
@Cacheable
文档中读取()
condition
可以使用SpEL指定方法参数的条件
我一直在尝试同样的方法,但失败了。以下是我的方法:
public static final String myStr = "4";
@Cacheable(condition="#!req.id.equals("+myStr+")")
public Response myCall(Request req){}
这是我的请求
POJO:
public class Request{
private String id;
public String getId(){
return this.id;
}
public void setId(String id){
this.id = id;
}
}
但是它失败了,除了spring SpEL例外,它说的是“!”这是无效的。有人能帮我把条件弄对吗?据我所知,你不能先使用#然后再依次使用其他运算符。 你必须使用like- “#…等于(..)=假” 或 “#…等于(…)!=真”
此外,最好按照Gary Russell的第一个答案建议使用。根据我的理解,您不能先使用#然后依次使用其他运算符。 你必须使用like- “#…等于(..)=假” 或 “#…等于(…)!=真”
此外,最好按照Gary Russell的第一个答案使用。首先,变量(参数)是
\req
,因此您需要#请求…
其次,您需要在SpEL中将myStr
表示为文本字符串
把这一切放在一起
@Cacheable(condition="!#req.id.equals('" + myStr + "')")
(请注意
myStr
值周围的单引号)。首先,变量(参数)是#req
,因此您需要#请求…
其次,您需要在SpEL中将myStr
表示为文本字符串
把这一切放在一起
@Cacheable(condition="!#req.id.equals('" + myStr + "')")
(注意
myStr
值周围的单引号)。是的,你是对的。我的意思是说,以后!操作人员谢谢你,你是对的。我的意思是说,以后!操作人员谢谢