时间:2021-05-20
SpringBoot在annotation的层面实现了数据缓存的功能,基于Spring的AOP技术。所有的缓存配置只是在annotation层面配置,像声明式事务一样。
Spring定义了CacheManager和Cache接口统一不同的缓存技术。其中CacheManager是Spring提供的各种缓存技术的抽象接口。而Cache接口包含缓存的各种操作。
CacheManger
针对不同的缓存技术,需要实现不同的cacheManager,Spring定义了如下的cacheManger实现。
CacheManger 描述 SimpleCacheManager 使用简单的Collection来存储缓存,主要用于测试 ConcurrentMapCacheManager 使用ConcurrentMap作为缓存技术(默认) NoOpCacheManager 测试用 EhCacheCacheManager 使用EhCache作为缓存技术,以前在hibernate的时候经常用 GuavaCacheManager 使用google guava的GuavaCache作为缓存技术 HazelcastCacheManager 使用Hazelcast作为缓存技术 JCacheCacheManager 使用JCache标准的实现作为缓存技术,如Apache Commons JCS RedisCacheManager 使用Redis作为缓存技术
常规的SpringBoot已经为我们自动配置了EhCache、Collection、Guava、ConcurrentMap等缓存,默认使用ConcurrentMapCacheManager。SpringBoot的application.properties配置文件,使用spring.cache前缀的属性进行配置。
application配置
入口类配置
加入注解 @EnableCaching
缓存注解
注解 描述 @Cacheable 在调用方法之前,首先应该在缓存中查找方法的返回值,如果这个值能够找到,就会返回缓存的值。否则,这个方法就会被调用,返回值会放到缓存之中。 @CachePut 将方法的返回值放到缓存中。在方法的调用前并不会检查缓存,方法始终都会被调用。 @CacheEvict 在缓存中清除一个或多个条目。 @Caching 分组的注解,能够同时应用多个其他的缓存注解。
手动使用EhCache
在实际开发过程中,存在不使用注解,需要自己添加缓存的情况。下面就以Ehcache为例,简单写一下配置过程。
1. 添加依赖
引入springboot-cache和ehcache。需要注意,EhCache不需要配置version,SpringBoot的根pom已经集成了。
<!-- 缓存 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <!-- ehcache --> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency>2. 入口类配置
加入注解 @EnableCaching
@SpringBootApplication@EnableCachingpublic class DemoApplication {}3. EhCache配置
在src\main\resources目录下,添加ehcache.xml文件,内容见文末。
4. application.application配置
5. 使用Cache
注入SpringBoot自动配置的bean,org.springframework.cache.CacheManager。
一个简单的测试类:
package com.bbf.frame.test;import com.bbf.frame.Application;import org.apache.commons.lang3.StringUtils;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.cache.Cache;import org.springframework.cache.CacheManager;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import org.springframework.test.context.web.WebAppConfiguration;import javax.annotation.Resource;@RunWith(SpringJUnit4ClassRunner.class)@WebAppConfiguration@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.MOCK)public class TestCache { @Resource private CacheManager cacheManager; @Test public void cacheTest() { // 显示所有的Cache空间 System.out.println(StringUtils.join(cacheManager.getCacheNames(), ",")); Cache cache = cacheManager.getCache("userCache"); cache.put("key", "123"); System.out.println("缓存成功"); String res = cache.get("key", String.class); System.out.println(res); }}附录 EhCache.xml
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本篇介绍了SpringBoot缓存(EhCache2.x篇),分享给大家,具体如下:SpringBoot缓存在springBoot中,通过@EnableCach
本文讲解SpringBoot与EhCache的整合。1EhCache简介EhCache是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernat
我的环境是Gradle+Kotlin+SpringBoot,这里介绍EhCache缓存框架在SpringBoot上的简单应用。在build.gradle文件添加
下面给大家介绍springboot整合ehcache实现支付超时限制的方法,具体内容如下所示:net.sf.ehcacheehcache-core2.6.11p
本文将介绍如何在springboot中集成ehcache作为hibernate的二级缓存。各个框架版本如下springboot:1.4.3.RELEASEspr