| New file | 
|  |  |  | 
|---|
|  |  |  | package com.dy.sso.config; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.dy.common.util.NumUtil; | 
|---|
|  |  |  | 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 { | 
|---|
|  |  |  | private static final int cacheInitialCapacityDefault = 10 ; | 
|---|
|  |  |  | private static final int cacheMaximumSizeDefault = 10000 ; | 
|---|
|  |  |  | private static final int cacheDurationDefault = 720 ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${pipIrr.sso.cacheMaximumSize}") | 
|---|
|  |  |  | private String cacheMaximumSize ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${pipIrr.sso.cacheDuration}") | 
|---|
|  |  |  | private String cacheDuration ; | 
|---|
|  |  |  | /* | 
|---|
|  |  |  | 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不可以同时使用 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Bean | 
|---|
|  |  |  | public CacheManager cacheManager() { | 
|---|
|  |  |  | int cacheMaximumSizeInt; | 
|---|
|  |  |  | int cacheDurationInt; | 
|---|
|  |  |  | if(NumUtil.isPlusIntNumber(cacheMaximumSize)){ | 
|---|
|  |  |  | cacheMaximumSizeInt = Integer.parseInt(cacheMaximumSize) ; | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | cacheMaximumSizeInt = cacheMaximumSizeDefault ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(NumUtil.isPlusIntNumber(cacheDuration)){ | 
|---|
|  |  |  | cacheDurationInt = Integer.parseInt(cacheDuration) ; | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | cacheDurationInt = cacheDurationDefault ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | CaffeineCacheManager cacheManager = new CaffeineCacheManager(); | 
|---|
|  |  |  | cacheManager.setCaffeine(Caffeine.newBuilder() | 
|---|
|  |  |  | .initialCapacity(cacheInitialCapacityDefault) | 
|---|
|  |  |  | .maximumSize(cacheMaximumSizeInt) | 
|---|
|  |  |  | .expireAfterAccess(cacheDurationInt, TimeUnit.MINUTES)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return cacheManager; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|