spring-boot-ehcache-demo

汝臻
2023-12-01

本地缓存其实项目中用得还比较多,常用的ehcache,现整合spring-boot搭建一个demo方便以后查阅。

依赖包

下面2个依赖是spring-boot整合ehcache必须的依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
    <version>${spring-boot.version}</version>
</dependency>
<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>2.10.3</version>
</dependency>

如果启用spring-boot单元测试,还需要加入下面的依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>${spring-boot.version}</version>
    <scope>test</scope>
</dependency>

配置

application.properties中指明ehcache配置文件

spring.cache.jcache.config=ehcache.xml

ehcache.xml配置ehcache缓存,具体配置项的意义请参考。
http://blog.csdn.net/clj198606061111/article/details/41121437

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false">

    <!--超过大小后持久化磁盘位置-->
    <diskStore path="java.io.tmpdir/ehcache"/>

    <!-- default cache -->
    <defaultCache
            maxElementsInMemory="1000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            overflowToDisk="false"/>

    <!--自定义缓存配置-->
    <cache name="countries"
           maxElementsInMemory="1000"
           eternal="false"
           timeToIdleSeconds="120"
           timeToLiveSeconds="120"
           overflowToDisk="false"
           memoryStoreEvictionPolicy="LRU">
    </cache>

</ehcache>

启用缓存

在spring-boot启动类加上@EnableCaching注解,表明该项目启用缓存。

@EnableCaching
@EnableScheduling
@SpringBootApplication
public class ItcljApplication {

    public static void main(String[] args) {
        new SpringApplicationBuilder().sources(ItcljApplication.class)
                .profiles("app").run(args);
    }

}

使用缓存

使用缓存其实很简单,只需要在缓存的方法上加上@Cacheable注解即可,@CacheEvict@CachePut等缓存相关注解另行查询其他资料。

@Component
@CacheConfig(cacheNames = "countries")
public class CountryRepository {

    @Cacheable(key = "'country'+#code")
    public Country findByCode(String code) {
        System.out.println("---> Loading country with code '" + code + "'");
        return new Country(code);
    }

}

原文地址:http://www.itclj.com/blog/58bd2a4447508f786718d4f4
项目地址:https://github.com/clj198606061111/spring-boot-ehcache-demo

 类似资料: