文档章节

Spring Boot cache backed guava/caffeine

Geek-S
 Geek-S
发布于 2017/04/10 14:51
字数 291
阅读 273
收藏 2
点赞 0
评论 0

    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
大兴
程序员
Java 缓存系统 - JetCache

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

areyouok ⋅ 01/23 ⋅ 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

阿里巴巴开源的通用缓存访问框架JetCache介绍

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

hlfrom331 ⋅ 04/24 ⋅ 0

阿里巴巴开源框架-通用缓存访问JetCache介绍

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

黄理 ⋅ 01/24 ⋅ 0

Spring Boot缓存实战 Redis + Caffeine 实现多级缓存

在前文我们介绍了如何使用Redis或者Caffeine来做缓存。 Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存-2 Spring Boot缓存实战 Caffeine 问题描述: 通过使用redis和Caffeine来做缓存...

xiaolyuh ⋅ 2017/12/21 ⋅ 0

Spring cache简单使用

Spring cache简单使用 前言 spring有一套和各种缓存的集成方式。类似于sl4j,你可以选择log框架实现,也一样可以实现缓存实现,比如ehcache,guava cache. 什么时候用缓存 首先,缓存是为了省...

庞陆阳 ⋅ 2016/10/28 ⋅ 0

J2Cache 2.2.0-beta 发布,开源中国两级缓存框架

J2Cache 2.2.0-beta 发布,J2Cache 是 OSChina 目前正在使用的两级缓存框架。第一级缓存使用 Ehcache,第二级缓存使用 Redis 。由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因此...

周其 ⋅ 01/08 ⋅ 21

Spring Boot集成spring-boot-devtools开发时实现热部署

Spring Boot集成spring-boot-devtools开发时实现热部署 Harries Blog™2018-05-130 阅读 httpHTMLSpringAppcachecatbuild...

Harries Blog™ ⋅ 05/13 ⋅ 0

Java 8的高性能缓存库--caffeine

Caffeine 是基于Java 8的高性能,接近最佳的缓存库。 Caffeine使用Google Guava启发的API提供内存缓存。 改进取决于您设计Guava缓存和ConcurrentLinkedHashMap的体验。 LoadingCache<Key, Gr...

匿名 ⋅ 2016/11/03 ⋅ 3

Spring Boot 1.3.0 M1 发布

Spring Boot 1.3.0 M1 发布,此版本现已提供在 Spring milestone repository,此版本是基于 Spring Framework 4.2.0.RC1 构建的,提供一些新特性和改进,主要更新内容如下: A new module w...

oschina ⋅ 2015/06/13 ⋅ 13

没有更多内容

加载失败,请刷新页面

加载更多

下一页

一张图看懂CDN全站加速产品解决方案

原文链接 本文为云栖社区原创内容,未经允许不得转载。

阿里云云栖社区 ⋅ 15分钟前 ⋅ 0

一张图看懂CDN全站加速产品解决方案

原文链接

猫耳m ⋅ 16分钟前 ⋅ 0

开启Swarm集群以及可视化管理

在搭建的两台coreos服务器上开启swarm集群 前置条件: docker均开启2375端口 同一个局域网内 主服务器上安装Portainer容器 安装Portainer容器执行: docker run -d -p 9000:9000 --restart=a...

ykbj ⋅ 34分钟前 ⋅ 0

单例设计模式

1、单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 2、饿汉式单例类 在这个类被加载时,静态变量instance会被初始化,此时类的私有构造子会被调用 饿汉式是典型...

职业搬砖20年 ⋅ 39分钟前 ⋅ 0

前端基础(四):前端国际规范收集

字数:1142 阅读时间:5分钟 前言 由于前端技术的灵活性和杂乱性,导致网上的许多解决方案不够全面甚至是完全错误,容易起到误导作用。所以,我对搜索到的解决方案往往是存疑态度。那么,如何...

老司机带你撸代码 ⋅ 41分钟前 ⋅ 0

Failed to open/create Network-VirtualBox Host-Only

虚拟机版本 : Oracle Vm VirtualBox 5.2.12 报错时机:开网卡二,重启虚拟机报错 "Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Ada......

p至尊宝 ⋅ 44分钟前 ⋅ 0

springMVC接收表单时 Bean对象有Double Int Char类型的处理

前台ajax提交表单price为double类型 后台controller就介绍不到 400错误 前台 实体类: public class ReleaseMapIconConfig{ private String id; private long maxValue; private long minVal......

废柴 ⋅ 50分钟前 ⋅ 0

ZOOKEEPER安装

工作需要在ubuntu上配置了一个zookeeper集群,有些问题记录下来。 1. zookeeper以来java,所以首先要安装java。但是ubuntu系统有自带的jdk,需要通过命令切换java版本: $ sudo update-alter...

恰东 ⋅ 53分钟前 ⋅ 0

linux 进程地址空间的一步步探究

我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。 那虚拟内存空间...

HelloRookie ⋅ 53分钟前 ⋅ 0

myatis #{}与${}区别及原理

https://blog.csdn.net/wo541075754/article/details/54292751

李道福 ⋅ 56分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部