文档章节

Spring Boot cache backed guava/caffeine

Geek-S
 Geek-S
发布于 2017/04/10 14:51
字数 291
阅读 287
收藏 2

    Spring Boot提供了spring-boot-starter-cache,支持多个缓存实现,如EHCache,Redis,GUAVA etc...,此处以轻量GUAVA为例:

一. 基本使用

0. 首先需要加入依赖,版本根据自己需求指定

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-cache</artifactId>
	<version>${v}</version>
</dependency>
<dependency>
	<groupId>com.google.guava</groupId>
	<artifactId>guava</artifactId>
	<version>${v}</version>
</dependency>

1. 开启缓存,在Application类加入@EnableCaching

2. 通过@Cacheable使用缓存

@Cacheable("{cacheNames}")
public Object needCache() {
	return ...;
}

 

二. 指定缓存参数[以过期时间为例,不同的数据类型要求的缓存时间不同]

Spring boot提供基于application.xx的配置

spring.cache.type=GUAVA
spring.cache.cache-names=cacheName
# 参数参考com.google.common.cache.CacheBuilderSpec
spring.cache.guava.spec=expireAfterWrite=7m

这种配置方式,只能提供一种策略的缓存(如果有直接基于配置配置文件的多种策略配置,请留言),如果不同缓存策略需要通过自定义配置:

@Configuration
public class CacheConfig {

	/**
	 * Define cache strategy
	 * 
	 * @return CacheManager
	 */
	@Bean
	public CacheManager cacheManager() {
		SimpleCacheManager simpleCacheManager = new SimpleCacheManager();
		List<Cache> caches = new ArrayList<>();

		# 缓存5min后失效
		caches.add(new GuavaCache("{cacheName}",
				CacheBuilder.newBuilder().expireAfterAccess(5, TimeUnit.MINUTES).build()));

		simpleCacheManager.setCaches(caches);

		return simpleCacheManager;
	}

}

 

配置完成发现spring推荐使用caffeine取代guava,所以改为使用caffeine作为实现。

 

PS: spring-gs-cachingcache-store-configuration-caffeineben-manes/caffeine

© 著作权归作者所有

共有 人打赏支持
Geek-S
粉丝 11
博文 77
码字总数 18976
作品 0
大兴
程序员
spring boot caffeine

spring 5中取消了Guava cache作为本地缓存,推荐使用 caffeine. 具体原因参见官网测试参数。 代码:https://gitee.com/emperors/spring-boot-integration.git...

翱翔fly
2017/10/24
0
0
Java 缓存系统 - JetCache

JetCache 是一个基于 Java 的缓存系统封装,提供统一的 API 和注解来简化缓存的使用。当前有四个实现,、(此部分未开源)、 (in memory) 和一个简易的 (in memory)。 主要特性: 通过统一的...

areyouok
01/23
0
0
Spring Boot Cache + Caffeine缓存

Caffeine和Spring Boot集成 Caffeine是使用Java8对Guava缓存的重写版本,在Spring Boot 2.0中将取代Guava。如果出现Caffeine,CaffeineCacheManager将会自动配置。使用spring.cache.cache-na...

xiaolyuh
2017/12/13
0
0
阿里巴巴开源的通用缓存访问框架JetCache介绍

JetCache是由阿里巴巴开源的通用缓存访问框架,如果你对Spring Cache很熟悉的话,请一定花一点时间了解一下JetCache,它更好用。 JetCache提供的核心能力包括: 提供统一的,类似jsr-107风格...

黄理
04/24
0
0
阿里巴巴开源框架-通用缓存访问JetCache介绍

JetCache是由阿里巴巴开源的通用缓存访问框架,如果你对Spring Cache很熟悉的话,请一定花一点时间了解一下JetCache,它更好用。 JetCache提供的核心能力包括: 提供统一的,类似jsr-107风格...

黄理
01/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

获取多个集合列表的笛卡尔积

获取多个集合笛卡尔积 电商中典型业务场景:商品搜索 单属性属性值之间为并查询 不同属性的属性值之间查询为与查询 import java.util.ArrayList;import java.util.List;/** * Created w...

键走偏锋
17分钟前
0
0
echarts 迁移地图 控制鼠标缩放大小比例

在网上找了好久没有找到解决方式,还是重新看了一下文档,终于找到的解决方案, zoom:1, //默认显示级别 scaleLimit:{min:1,max:3}, // 缩放级别 echarts 文档-配置项链接 http://echarts.b...

心驰
20分钟前
0
0
Boot2Docker ISO is out-of-date,

Boot2Docker ISO is out-of-date, downloading the latest release. 使用docker-machine时无法更新Boot2Docker ISO导致创建vm machine失败 解决方法:关闭网络,创建好之后再开启...

writeademo
28分钟前
0
0
在 Tomcat 中设置 Tapestry 框架的 html 热加载

如果开发中使用到了 Tapestry 这个框架,如果事先没有设置过的话,开发的时候 html 是不会热加载的,也就是说修改了 html 文件,不能刷新浏览器后立马看到修改完的效果,必须先重新启动应用服...

LeoXu
50分钟前
0
0
【微服务】开启巨石应用到微服务的探索

背景 在过去的一年时间里,我一直在从事一件事情,将现有的单体应用(巨石应用)向微服务改造。 接下来,将持续整理一些在微服务路上的学习与成长。 为什么要做微服务 单体应用,开发、部署简...

艳沐石
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部