Spring Boot 中集成使用 Spring Cache和Caffeine做内存缓存
之前已经简单介绍过Caffeine的使用了,可以参考我之前的博文:Java高性能本地缓存框架Caffeine
今天来学习一下在Spring Boot中如何使用Spring Cache来快速集成Caffeine
添加依赖
加入spring cache和caffeine的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</dependency>
添加配置
注意千万不要漏了@EnableCaching
@Configuration
@EnableCaching
public class CacheConfig extends CachingConfigurerSupport {
@Bean
public CacheManager cacheManager() {
CaffeineCacheManager cacheManager = new CaffeineCacheManager();
cacheManager.setCaffeine(Caffeine.newBuilder()
.initialCapacity(10)
.maximumSize(100)
.expireAfterAccess(10, TimeUnit.MINUTES));
cacheManager.setAllowNullValues(true);
return cacheManager;
}
@Bean
@Override
public KeyGenerator keyGenerator() {
return (target, method, params) -> {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(":");
sb.append(method.getName());
for (Object obj : params) {
sb.append(":").append(obj);
}
return String.valueOf(sb);
};
}
}
注解使用
需要在缓存的方法上加入注解@Cacheable(cacheNames = "xxxxxx")
,因为加上了KeyGenerator 的配置所以,key是根据KeyGenerator 来生成的,这里可以不写。
其他的注解使用请参照Spring Cache,或者可以参考我的另一篇博文关于Spring Cache Redis的集成,使用到的注解都是类似的。