我从Spring@Cacheable
文档(https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/cache/annotation/Cacheable.html#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;
}
}
但是它在SpringSpEL例外情况下失败了,说“!”是无效的。有人能帮我把情况弄好吗?
根据我的理解,您不能先使用#然后依次使用其他运算符。您必须使用like-“#…equals(…)=”假“或”#…等于(…)!=真的”
此外,最好按照加里·拉塞尔的第一个答案建议使用。
首先,变量(参数)是#req
,所以需要!#req...
。
其次,您需要在SpEL中将myStr
表示为文本字符串。
把这一切放在一起。。。
@Cacheable(condition="!#req.id.equals('" + myStr + "')")
(请注意myStr
值周围的单引号)。
问题内容: 从spring文档中: 如何指定使用和作为密钥? 问题答案: 如果没有另外指定,当前的Spring缓存实现将所有方法参数用作缓存键。如果要使用选定的键,请参考 Arjan的答案,该答案使用SpEL列表,这是创建唯一键的最简单方法。 从Spring文档 随着Spring 4.0的发布,默认的密钥生成策略发生了变化。Spring的早期版本使用密钥生成策略,该策略对于多个密钥参数仅考虑参数的
是否可以在同一方法上使用和?
问题内容: 有没有更Python的方式来做到这一点? 问题答案: 您可以将它们添加到类似kwarg的列表中: if authenticate: connect_kwargs[‘password’] = “bar” connect_kwargs[‘otherarg’] = “zed” connect(**connect_kwargs) 当您可以将一组复杂的选项传递给函数时,这有时会很有帮助。在这种简
我不熟悉我们在Spring框架中用于缓存的@Cacheable和@CacheEvict注释。但是,在研究@Cacheable使用的实现和参数时,@Cacheable注释的value和cacheName参数之间有什么区别?
问题内容: Varargs: 与 单数组参数: Java 1.6似乎接受/拒绝以下内容: 假设以上内容是正确的,为什么不总是使用varargs而不是单个数组参数呢?似乎免费增加了呼叫者的灵活性。 如果有,专家可以共享内部JVM的不同吗? 谢谢。 问题答案: 数组从Java的开始就出现了,而varargs是最近才添加的。因此,许多旧代码仍然很高兴地使用数组。 还要注意,使用显式数组参数调用通用var
当我从not bean类中的方法调用Cacheable方法时,我突然发现@Cacheable不起作用。 请在下面找到我的代码,并帮助我什么是问题或我错过的东西。