0

我有一个关于在春季使用咖啡因进行缓存的问题。

我有一个缓存配置:

@Configuration
public class CaffeineCacheConfig {

    @Bean
    public CacheManager cacheManager() {
        CaffeineCacheManager cacheManager = new CaffeineCacheManager(
                "someDataCache1",
                "someDataCache2");
        cacheManager.setCaffeine(caffeineCacheBuilder());
        return cacheManager;
    }

    Caffeine<Object, Object> caffeineCacheBuilder() {
        return Caffeine.newBuilder()
                .initialCapacity(100)
                .maximumSize(200)
                .expireAfterWrite(1, TimeUnit.DAYS)
                .recordStats();
    }

}

还有一个@Cachaeble方法:

@Override
@Cacheable
public List<SomeData> getSomeData(String group) {
    return someService.getSomeDataForGroup(group);
}

现在,这些group值是预定义的,它们只能是group1group2并且group3将来会添加。

这种缓存机制是否可以根据值来配置,String group所以someDataCache1会在什么时候String group使用,什么时候使用等等?group1someDataCache1String groupgroup2

4

1 回答 1

1

您可以向注解添加多个条件 @Cacheable注解@Caching

@Caching(cacheable = {
        @Cacheable(cacheNames = "someDataCache1", condition = "#group.equals('group1')"),
        @Cacheable(cacheNames = "someDataCache2", condition = "#group.equals('group2')")
})
public List<String> getSomeData(String group) {
    return someService.getSomeDataForGroup(group);
}
于 2022-03-02T12:55:46.247 回答