1. 引入jar:
implementation 'com.github.ben-manes.caffeine:caffeine:2.8.4'
implementation('org.springframework.boot:spring-boot-starter-cache')
2. 使用配置类配置
2.1启动类加注解: @EnableCaching
2.2 配置类:
package com.cnpc.cmp.cmpworksheetapp.config;
import com.github.benmanes.caffeine.cache.*;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
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.Collections;
import java.util.concurrent.TimeUnit;
/**
* @ClassName CacheConfig
* @Description springboot集成本地缓存caffeine 配置类
* @Date
*/
@Configuration
public class CacheConfig {
@Bean("caffeineCacheManager")
public CacheManager cacheManager(){
CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager();
caffeineCacheManager.setCaffeine(getCaffeine());
caffeineCacheManager.setCacheLoader(cacheLoader());
//是否允许值为空
caffeineCacheManager.setAllowNullValues(false);
caffeineCacheManager.setCacheNames(Collections.singleton("test"));
return caffeineCacheManager;
}
@Bean
public CacheLoader<Object,Object> cacheLoader(){
return new CacheLoader<Object, Object>() {
@Override
public @Nullable Object load(@NonNull Object key) throws Exception {
// 这里我们就可以从数据库或者其他地方查询最新的数据 ???
return null;
}
@Override
public @Nullable Object reload(@NonNull Object key, @NonNull Object oldValue) throws Exception {
System.out.println("--refresh--:"+key);