Spring @Cacheable with complex keys still executed

前端 未结 2 977
醉酒成梦
醉酒成梦 2021-01-01 00:11

I have the following for the usage of a @Cacheable in spring (3.1):

spring:




        
2条回答
  •  夕颜
    夕颜 (楼主)
    2021-01-01 01:02

    In my case, the problem was caused by using the wrong configuration of the cache provider (Caffeine):

    @Bean
    public Caffeine caffeineCacheBuilder() {
        return Caffeine.newBuilder()
            .initialCapacity(100)
            .maximumSize(1000)
            .expireAfterAccess(10, TimeUnit.MINUTES)
            .weakKeys(); // cause problems when concatenated keys used
    }
    

    As the docs says, weakKeys() method:

    Specifies that each key (not value) stored in the cache should be wrapped in a WeakReference (by default, strong references are used).

    Warning: when this method is used, the resulting cache will use identity ({@code ==}) comparison to determine equality of keys. Its {@link Cache#asMap} view will therefore technically violate the {@link Map} specification (in the same way that {@link IdentityHashMap} does).

提交回复
热议问题