当前位置: 首页 > 知识库问答 >
问题:

Spring framework+Hazelcast,如何使用@Cacheable注释启用/禁用缓存

李星波
2023-03-14

我正在使用Spring框架和hazelcast缓存在服务层缓存REST APi。我缓存的api有@Cacheable注释,带有cachename和keygenerator,工作很好。我正在寻找使用application属性或Consuler属性启用/禁用缓存的最佳方法。为此,我试图传递@cachable注释的condition属性中的属性,但没有成功。使用这种方法,我最终将在多个地方传递相同的值(无论我在API级别缓存的什么地方)。有没有什么好的方法来处理这样的操作。下面是一个代码片段作为示例

@Cacheable(cacheNames = CacheName.MyCache1,keyGenerator = "customKeyGen")
public CachingObject myFirstAPI(String param1, String param2) {
}

在这里,hazelcast缓存将使用myFirstAPI返回的customKeyGen和put值(CachingObject)。如果我必须禁用此操作,我当前的方法是传递一些值(从应用程序属性读取)作为条件,以便它在创建缓存之前评估标志/条件,并且仅当条件为true(即缓存已启用)时缓存该值,例如。

@Cacheable(cacheNames = CacheName.MyCache1,keyGenerator = "customKeyGen", condition="${enableCache}")
public CachingObject myFirstAPI(String param1, String param2) {
}

在我的例子中,我正在传递条件抛出异常的表达式语言,我将弄清楚原因(它当前抛出SpelEvaluationException,在“org.SpringFramework.cache.Interceptor.cacheExpressionRootObject”类型的对象上找不到属性或字段“enable cache”)

我的问题是,这是启用/禁用缓存的正确方法吗?请建议。

共有1个答案

符风畔
2023-03-14

尝试spring.cache.type==none。请参阅https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-caching.html#boot-features-caching-provider-none

 类似资料:
  • 我正在从下面的方法中获取电影列表,并带有@Cacheable注释。由于它没有任何参数,我将key设置为#root.method.name。 现在,我想添加一个新的电影,同样应该添加到上述缓存。 我试过这个,但它给了我例外。 我们可以在这里使用@CachePut注释,还是有其他方法?

  • 我正在尝试使用hazelcast mancenter配置wan复制,但我没有在此处获得选择快照启用/禁用功能的选项,因为该选项未在dropdown.Is中列出,有办法通过mancenter实现此功能吗?版本3.9.4 hazelcast版本3.9.3 谢谢

  • 我试图在没有任何XML的情况下设置Spring AOP。我想启用

  • 我的情况是,我有Grails 2.1.2应用程序,并希望引入使用缓存插件和cache-ehcache插件作为实现的方法级缓存。 我的缓存配置为在内存中,如下所示: 我有一个像这样的方法,它只接受int参数,所以密钥生成不是问题: 我的问题是,当调用这个方法时,我得到了一个< code > Java . lang . out of memory error:Java heap space 异常。原因

  • 问题内容: 是否有注释声明某个方法即使是公共的也不会包含在JavaDocs中? 就像是: 附言:我了解这里有关API的要点,但是这些方法只是“不受支持”。它们可以工作(并且必须是公共的,以便从其他软件包访问),但是我们不希望在它们的功能与受支持的使用场景无关时,对其进行记录并回答有关如何使用它们的问题。好的设计可能意味着将它们移到另一个类,但是它们在逻辑上引用了该类中的数据。 问题答案: 如果您使

  • 我正在使用jackson库,我遇到了一种情况,我想在序列化/反序列化时使用对象映射器禁用@JsonFormat注释。 我的Api代码在第三方库中,所以我不能删除/添加任何注释,所以objectMapper是唯一的选择。 Api类别: 我的代码: 我希望这种转换成功发生。 目前我得到了:com.fasterxml.jackson.databind。JsonMappingException:格式无效: