文章目錄
-
- Spring Boot 中內建使用 Spring Cache和Caffeine做記憶體緩存
-
- 添加依賴
- 添加配置
- 注解使用
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的內建,使用到的注解都是類似的。
參考:Spring Data Redis 使用