spring 5中取消了Guava cache作为本地缓存,推荐使用 caffeine. 具体原因参见官网测试参数。
org.springframework.boot spring-boot-starter-cache com.github.ben-manes.caffeine caffeine
spring.cache.caffeine.spec=maximumSize=200,expireAfterAccess=600s
可以在配置文件中application.properties 配置容量,过期时间,cache name
建议是在代码中,配置,因代码中配置更加灵活,可以设置每一个cache name的 过期时间,容量
@EnableCaching@Configurationpublic class CacheConfig { public static final int DEFAULT_MAXSIZE = 50000; public static final int DEFAULT_TTL = 24; /** * 创建缓存,有效期,容量 */ public enum Caches { // 默认 24小时 5W getDefault, // 1小时,最大容量1000 getOtherthing(1, 1000), ; Caches() { }; Caches( int ttl) { this.ttl = ttl; } Caches(int ttl, int maxSize) { this.ttl = ttl; this.maxSize = maxSize; } // 最大數量 private int maxSize = DEFAULT_MAXSIZE; // 过期时间(小时) private int ttl = DEFAULT_TTL; public int getMaxSize() { return maxSize; } public int getTtl() { return ttl; } } /** * 创建基于Caffeine的Cache Manager * @return */ @Bean public CacheManager caffeineCacheManager() { SimpleCacheManager cacheManager = new SimpleCacheManager(); ArrayListcaches = new ArrayList (); for (Caches c : Caches.values()) { caches.add(new CaffeineCache(c.name(), Caffeine.newBuilder().recordStats() .expireAfterWrite(c.getTtl(), TimeUnit.HOURS) .maximumSize(c.getMaxSize()) .build())); } cacheManager.setCaches(caches); return cacheManager; }}
代码:https://gitee.com/emperors/spring-boot-integration.git