相关疑难解决方法(0)

多个咖啡因LoadingCaches添加到Spring CaffeineCacheManager

我想在LoadingCacheSpring 上添加几个不同的CacheManager,但我不知道如何使用它CaffeineCacheManager.似乎只有一个加载器可以刷新内容,但是我需要为每个缓存单独加载.是否可以向Spring缓存管理器添加多个加载缓存?如果是这样,那怎么样?

CaffeineCacheManager cacheManage = new CaffeineCacheManager();

LoadingCache<String, Optional<Edition>> loadingCache1 = 
            Caffeine.newBuilder()
            .maximumSize(150)
            .refreshAfterWrite(5, TimeUnit.MINUTES)
            .build(test -> this.testRepo.find(test));

LoadingCache<String, Optional<Edition>> loadingCache2 = 
            Caffeine.newBuilder()
            .maximumSize(150)
            .refreshAfterWrite(5, TimeUnit.MINUTES)
            .build(test2 -> this.testRepo.find2(test2));

// How do I add to cache manager, and specify a name?
Run Code Online (Sandbox Code Playgroud)

spring spring-cache caffeine

9
推荐指数
1
解决办法
5262
查看次数

是否可以调整 Caffeine LoadingCache 以与 Spring Boot 的 @Cacheable 一起使用?

我正在开发一个大型 Spring Boot 2.1.5.RELEASE 应用程序,使用 Caffeine 作为缓存提供程序。为了防止 I/O 瓶颈,我LoadingCache<K,V>在(基本上)以下方式中使用了咖啡因:

LoadingCache<K, V> cache = Caffeine.newBuilder()
    .refreshAfterWrite(1, TimeUnit.MINUTES)
    .build(loadStuffOverHttp());
Run Code Online (Sandbox Code Playgroud)

据我所知,如果不使用LoadingCache.

但是,LoadingCache 没有实现 Spring 的Cache. 这意味着我不能依赖@Bean方法来注册我的缓存,每个缓存都需要进行不同的配置。理论上,在 Spring 上下文中注册将允许它们与 Spring 的@Cacheable注释结合使用。

从我从CaffeineCacheConfiguration.java的源代码中可以看出,我也不能依赖 Spring Boot 的自动配置。类型的 Bean CaffeineCache(用于 Caffeine 的Spring 缓存适配器模式Cache<K,V>)是自动注册的,但适配器强制我将其<Object, Object>用作CacheLoader<K, V>. 我只想把这作为最后的手段。

这个 SO 问题表明可以以编程方式配置不同的缓存:

只需将您的自定义缓存公开为 bean。它们会自动添加到CaffeineCacheManager.

但是,使用LoadingCache<K, V>(使用任意K, V, not <Object, Object> …

java spring caching spring-boot caffeine

8
推荐指数
1
解决办法
2707
查看次数

标签 统计

caffeine ×2

spring ×2

caching ×1

java ×1

spring-boot ×1

spring-cache ×1