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

问题描述 投票:3回答:2

我有一个方法,我想根据对另一个bean的方法调用的结果有条件地缓存(这表示是否打开了全局缓存)。

我尝试过,使用SpEL,有些东西

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

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

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

有一个类似的帖子here谈论关键,而不是条件。

有没有人成功设法在缓存注释中引用其他bean?

java spring caching spring-el
2个回答
0
投票

通过在有问题的类上编写一个方法来修复,该方法委托给另一个bean方法调用。不理想,但工作正常。


0
投票

假设你的类中的autowired bean中的someBean,你可以使用被调用的对象来获取它,试试这个

@Cacheable(condition="target.someBean.isSomeBoolean()")
© www.soinside.com 2019 - 2024. All rights reserved.