# TTL and size bounds are the provider's job, not the abstraction's

cacheManager : org.springframework.cache.caffeine.CaffeineCacheManager
configured   : expireAfterWrite=400ms, maximumSize=3, recordStats

two calls, same key, immediately -> 1 repository calls
one more call 600 ms later      -> 2 repository calls   <- the entry expired

--- size bound ---
five distinct keys written, maximumSize = 3
estimated size after eviction settles : 3
stats                                 : hits=1 misses=5 evictions=3

The Spring cache abstraction has no TTL, no size limit and no eviction
policy of its own - it is an interface over whatever you plug in. On the
default simple provider, a ConcurrentHashMap, an entry stays until something
evicts it by hand or the process ends.
