首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >咖啡因Springboot整合

咖啡因Springboot整合
EN

Stack Overflow用户
提问于 2020-01-30 06:55:18
回答 2查看 5.4K关注 0票数 1

我们正在使用咖啡因来替换ConcurrentHashMap缓存,这在当前的springboot中是默认的。我们正在使用@Cacheable(cacheNames = { "..." })注释动态创建缓存。

我正在尝试设置recordStats属性,因为我们使用springboot执行器包来监视应用程序的各个方面。

我试图在spring.cache.caffeine.spec=expireAfterAccess=3600s,recordStats中设置application.properties,这是不起作用的。

@Configure类中设置它也不起作用:

代码语言:javascript
复制
@Configuration
public class CacheConfig {

  @Bean
  public CacheManager cacheManager() {
    CaffeineCacheManager cacheManager = new CaffeineCacheManager();
    cacheManager.setCacheSpecification("expireAfterAccess=3600s,recordStats");
    return cacheManager;
  }
}

缓存统计信息不出现在/actuator/cache/{caches}端点或我们的springboot-admin服务器中。

从当前的api文档中,我发现:

字符串语法是一系列逗号分隔的键或键值对,每个键对应于咖啡因生成器方法。

initialCapacity=integer:设置Caffeine.initialCapacity。

..。

recordStats:设置Caffeine.recordStats()。

工期由整数表示,后面跟着"d“、"h”、"m“或"s",分别表示天、小时、分钟或秒。当前没有以毫秒、微秒或纳秒为单位请求过期的语法。

逗号和等号前后的空格被忽略。不能重复密钥;在单个值中使用下列对密钥也是非法的:

maximumSize和maximumWeight weakValues和softValues

以及相关问题:

CaffeineSpec不支持使用非值参数配置咖啡因方法。这些必须在代码中配置。

有没有可能完成我的任务?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-04 11:42:08

我设法让它起作用了。以下是代码:

代码语言:javascript
复制
@Configuration
public class CacheConfig {

  @Bean
  public CacheManager cacheManager() {
    CaffeineCacheManager cacheManager = new CaffeineCacheManager("cache1",
        "cache2", "cache3");
    cacheManager.setCacheSpecification("recordStats");
    return cacheManager;
  }
}

还有一个缺点,就是缓存名必须与@Cacheable(cachenames={"..."})注释中的名称匹配。

票数 4
EN

Stack Overflow用户

发布于 2020-02-04 00:40:31

您可以手动为缓存定义bean。

代码语言:javascript
复制
@Bean
public Cache recorded() {
    return new CaffeineCache("recorded", Caffeine.newBuilder()
            .recordStats()
            .build());
}

这个bean将由Spring获取,您将能够在代码中使用@Cacheable("recorded") (注意匹配的缓存名称)。

另外,我的咖啡因和Spring的宠物项目也可能对您有用:https://github.com/stepio/coffee-boots

这个精确的recordStats()设置功能没有在那里测试,但是bug报告和PRs总是很受欢迎的。

P.S.:相关问题:Dynamically toggling recording stats on Caffeine Cache

干杯!

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59980554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档