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

时间:2015-03-02 15:06:33

标签: java spring caching spring-el

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

我尝试过使用SpEL,这是

的内容
@Cacheable(condition="@someBean.isSomeBoolean()")

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

假设您的类中的自动装配bean中有someBean,您可以使用被调用的对象目标来获取它,请尝试

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