天天看點

Spring Boot 中快速內建Spring Cache和Caffeine做記憶體緩存

文章目錄

    • 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 使用

繼續閱讀