Spring Boot学习总结(9)——SpringBoot集成Ehcache3.x

来源:互联网 发布:2017暑运大数据报告 编辑:程序博客网 时间:2024/05/29 06:59
1、引入依赖包

<dependency>
<groupId>javax.cache</groupId>
<artifactId>cache-api</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.4.0</version>
</dependency>

2、开启Spring Boot缓存
@EnableCaching添加注解后Spring会根据以下顺序扫描缓存提供者进行创建
Generic→JCache (JSR-107)→ EhCache 2.x→Hazelcast→Infinispan→Redis →Guava→Simple
因为项目已经增加了Ehcache相关jar所以最终创建的cacheManager是Eh107CacheManager
也可以通过application.yml直接强制指定使用的缓存
spring: cache: jcache: config: classpath:ehcache.xml
3、配置cache
配置方法有两种:
代码配置
cacheManager.createCache("people", new MutableConfiguration<>() .setExpiryPolicyFactory(TouchedExpiryPolicy .factoryOf(new Duration(SECONDS, 40))) .setStoreByValue(false) .setStatisticsEnabled(true));
主要这里使用的cacheManager是javax.cache.CacheManager
并非spring提供的org.springframework.cache.CacheManager
xml配置
也可以建一个ehcache.xml进行配置
<cache alias="people" uses-template="heap-cache"> <expiry> <ttl unit="seconds">40</ttl> </expiry> </cache>
4、缓存的使用
通过spring提供的缓存注解可以和容易的配置缓存的使用这里介绍一下主要的缓存注解
@CacheConfig(cacheNames="people")
CacheConfig加在类上,制定类下方的方法使用的缓存
@Cacheable(key="#id")
Cacheable加在类的方法,如果不指定cacheNames会自动找到类上配置的cacheNames进行赋值
@CacheEvict(key="#customer.id")
CacheEvict用于清除缓存,可以根据key进行删除,也可以清空所有数据
也可以使用java规范定义的一套缓存注解spring也会进行识别,这里就不细说了
如果有更复杂的使用场景可以直接让Spring注入cacheManager进行更复杂的缓存操作,建议直接使用

org.springframework.cache.CacheManager 这样如果切换缓存实现就不需要改动代码了

5.注意:JSR107规范
ehcache3.x与2.x的差距还是非常大的,主要区别在于3.x后使用了java的缓存规范JSR107
Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry。
CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可以在运行期访问多个CachingProvider。
CacheManager定义了创建、配置、获取、管理和控制多个唯一命名的Cache,这些Cache存在于CacheManager的上下文中。一个CacheManager仅被一个CachingProvider所拥有。
Cache是一个类似Map的数据结构并临时存储以Key为索引的值。一个Cache仅被一个CacheManager所拥有。
Entry是一个存储在Cache中的key-value对。
每一个存储在Cache中的条目有一个定义的有效期,即Expiry Duration。一旦超过这个时间,条目为过期的状态。一旦过期,条目将不可访问、更新和删除。缓存有效期可以通过ExpiryPolicy设置。
项目的搭建

阅读全文
0 0
原创粉丝点击