1.pom.xml增加2个依赖
2.application.properties增加配置
3.启动类增加@EnableCaching
4.配置CacheManager
5.打印所有缓存内容
注意:在当前类中调用缓存方法失效
org.springframework.boot
spring-boot-starter-cache
com.github.ben-manes.caffeine
caffeine
2.8.8
application.properties
caching.specs.user.timeout=10
@EnableCaching
public class SpringbootApiApplication {}
@Configuration
@ConfigurationProperties(prefix = "caching")
@Data
@Component
public class CacheConfiguration {
@Data
public static class CacheSpec {
private Integer timeout;
private Integer max = 200;
}
private Map specs;
@Primary
@Bean("simpleCacheManager")
public CacheManager cacheManager(Ticker ticker) {
SimpleCacheManager manager = new SimpleCacheManager();
new CaffeineCacheManager();
if (specs != null) {
List caches =
specs.entrySet().stream()
.map(entry -> buildCache(entry.getKey(),
entry.getValue(),
ticker))
.collect(Collectors.toList());
manager.setCaches(caches);
}
return manager;
}
private CaffeineCache buildCache(String name, CacheSpec cacheSpec, Ticker ticker) {
final Caffeine
String info = cacheService.cache(id, null).toString();
info += "
" + cacheService.cache(id, "tom").toString();
--------------------------------------------------
// 打印所有缓存
Collection cacheNames = cacheManager.getCacheNames();
cacheNames.forEach(cacheName -> {
Cache cache = cacheManager.getCache(cacheName);
Object nativeCache = cache.getNativeCache();
Field[] fields = nativeCache.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
try {
System.out.println(field.getName() + "->" + field.get(nativeCache));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
});
// 打印所有缓存 end