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.bootgroupId>
            <artifactId>spring-boot-starter-cacheartifactId>
        dependency>
        <dependency>
            <groupId>com.github.ben-manes.caffeinegroupId>
            <artifactId>caffeineartifactId>
        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 使用

你可能感兴趣的:(Spring,Boot,caffeine)