我的 Spring 缓存实现如下
@Component
public class KPCacheExample {
private static final Logger LOG = LoggerFactory.getLogger(KPCacheExample.class);
@CachePut(value="kpCache")
public String saveCache(String userName, String password){
LOG.info("Called saveCache");
return userName;
}
@Cacheable(value="kpCache")
public String getCache(String userName, String password){
LOG.info("Called getCache");
return "kp";
}
}
和 Java 配置文件
@Configuration
@ComponentScan(basePackages={"com.kp"})
public class GuavaCacheConfiguration {
@Bean
public CacheManager cacheManager() {
GuavaCacheManager guavaCacheManager = new GuavaCacheManager("kpCache");
guavaCacheManager.setCacheBuilder(CacheBuilder.newBuilder().expireAfterAccess(2000, TimeUnit.MILLISECONDS).removalListener(new KPRemovalListener()));
return guavaCacheManager;
}
}
默认情况下,spring 使用缓存接口中的 put 方法来更新/放入缓存中的值。如何强制 spring 使用 putifabsent 方法被调用,这样如果缓存丢失或在其他情况下,我可以获得 null 值,第一次请求具有唯一用户名和密码的方法应该返回 null 并且随后请求该用户名和密码应该返回用户名。