Spring缓存 - 如何在SPEL中引用一个bean以通过@Cacheable启用条件缓存

3

我有一个方法,想要根据另一个bean的方法调用结果(即是否开启全局缓存)来有条件地进行缓存。

我尝试使用SpEL,例如:

@Cacheable(condition="@someBean.isSomeBoolean()")

这需要一个BeanResolver,但我没有配置它。我可以通过编程方式创建其中之一,但如何配置我已经缓存了方法的类来引用它呢?我目前收到的错误是:

No bean resolver registered in the context to resolve access to bean 

这里有一个类似的帖子 在这里,讨论的是键而不是条件。

有没有人成功地在缓存注解中引用其他bean?


我猜如果你将 someBean 作为方法参数发送,那么它可以在条件语句中轻松引用?你试过了吗? - anurag gupta
我会尝试一下,谢谢。显然,引入参数很麻烦,但如果它能工作,那就行了! - PaulNUK
2个回答

1
假设someBean是您类中的自动装配bean,您可以使用被调用目标对象来获取它,尝试这样做。
@Cacheable(condition="target.someBean.isSomeBoolean()")

0

通过编写一个委托给另一个bean方法调用的类方法来解决问题。虽然不是最理想的方法,但可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接