| package com.dy.sso.config; | 
|   | 
|   | 
| import com.github.benmanes.caffeine.cache.Caffeine; | 
| import org.springframework.beans.factory.annotation.Value; | 
| import org.springframework.cache.CacheManager; | 
| import org.springframework.cache.caffeine.CaffeineCacheManager; | 
| import org.springframework.context.annotation.Bean; | 
| import org.springframework.context.annotation.Configuration; | 
|   | 
| import java.util.concurrent.TimeUnit; | 
|   | 
| @Configuration | 
| public class CaffeineCacheConfiguration { | 
|     /* | 
|       initialCapacity=[integer]: 初始的缓存空间大小 | 
|       maximumSize=[long]: 缓存的最大条数 | 
|       maximumWeight=[long]: 缓存的最大权重 | 
|       expireAfterAccess=[duration]: 最后一次写入或访问后经过固定时间过期 | 
|       expireAfterWrite=[duration]: 最后一次写入后经过固定时间过期 | 
|       refreshAfterWrite=[duration]: 创建缓存或者最近一次更新缓存后经过固定的时间间隔,刷新缓存 | 
|       weakKeys: 打开key的弱引用 | 
|       weakValues:打开value的弱引用 | 
|       softValues:打开value的软引用 | 
|       recordStats:开发统计功能 | 
|     注意: | 
|       expireAfterWrite和expireAfterAccess同时存在时,以expireAfterWrite为准。 | 
|       maximumSize和maximumWeight不可以同时使用 | 
|       weakValues和softValues不可以同时使用weakValues和softValues不可以同时使用 | 
|      */ | 
|   | 
|     @Value("${pms.global.ssoUserExpireAfterAccess:60}") | 
|     private Integer defaultTrueRandomFalsePassword; | 
|     @Value("${pms.global.ssoCacheSizeInit:10}") | 
|     private Integer ssoCacheSizeInit; | 
|     @Value("${pms.global.ssoCacheSizeMax:10000}") | 
|     private Integer ssoCacheSizeMax; | 
|   | 
|     @Bean | 
|     public CacheManager cacheManager() { | 
|         CaffeineCacheManager cacheManager = new CaffeineCacheManager(); | 
|         cacheManager.setCaffeine(Caffeine.newBuilder() | 
|                 .initialCapacity(ssoCacheSizeInit) | 
|                 .maximumSize(ssoCacheSizeMax) | 
|                 .expireAfterAccess(defaultTrueRandomFalsePassword, TimeUnit.MINUTES)); | 
|   | 
|         return cacheManager; | 
|     } | 
| } |