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

Java Spring缓存-如何在SPEL中引用bean以通过@Cacheable启用条件缓存,java,spring,caching,spring-el,Java,Spring,Caching,Spring El,我有一个方法,我想根据对另一个bean的方法调用的结果有条件地缓存它(这表示是否打开了全局缓存) 我试过,用SpEL,类似于 @Cacheable(condition="@someBean.isSomeBoolean()") 这需要一个我没有配置的BeanResolver。我可以通过编程方式创建其中一个,但是如何配置我拥有可缓存方法的类来引用它呢?我当前遇到的错误是: No bean resolver registered in the context to resolve access to

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

我试过,用SpEL,类似于

@Cacheable(condition="@someBean.isSomeBoolean()")
这需要一个我没有配置的BeanResolver。我可以通过编程方式创建其中一个,但是如何配置我拥有可缓存方法的类来引用它呢?我当前遇到的错误是:

No bean resolver registered in the context to resolve access to bean 
有一篇类似的帖子谈论的是钥匙,而不是条件


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

通过在所讨论的类上编写一个委托给另一个bean方法调用的方法进行修复。不理想,但工作正常。

假设您的类中有一个自动连接bean中的someBean,您可以使用被调用的对象target来获取它,请尝试以下操作

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

我猜如果您发送someBean作为方法参数,那么它可以在条件中很容易地被引用?你试过了吗?我试一下谢谢。显然,引入一个参数是一件痛苦的事情,但如果它起作用,它就起作用了!