Springboot integrated memory cache

  Cache, springboot

Maven dependency

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>19.0</version>
        </dependency>

Guava cache is used here.

Configuration (configuration file or java configuration)

Configuration file

spring.cache.type=guava
spring.cache.cache-names=cache1,cache2
spring.cache.guava.spec=maximumSize=500,expireAfterAccess=5m

Java configuration

@Configuration
@EnableCaching
public class CacheConfig {

    public static final String CACHE1 = "cache1";

    public static final String CACHE2 = "cache2";

    @Bean
    public Cache cache1() {
        return new GuavaCache(CACHE1, CacheBuilder.newBuilder()
                .maximumSize(500)
                .expireAfterWrite(5, TimeUnit.MINUTES)
                .build());
    }

    @Bean
    public Cache cache2() {
        return new GuavaCache(CACHE2, CacheBuilder.newBuilder()
                .maximumSize(500)
                .expireAfterWrite(10, TimeUnit.MINUTES)
                .build());
    }

}

Use

    @Cacheable(CacheConfig.CACHE1)
    public User getUser(String token){
        //......
    }

docs