SpringBoot加入Guava Cache实现本地缓存代码实例
这篇文章主要介绍了SpringBoot加入Guava Cache实现本地缓存代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在pom.xml中加入guava依赖
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>18.0</version> </dependency>
创建一个CacheService,方便调用
public interface CacheService { //存 void setCommonCache(String key,Object value); //取 Object getCommonCache(String key); }
其实现类
import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import com.wu.service.CacheService; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import java.util.concurrent.TimeUnit; @Service public class CacheServiceImpl implements CacheService { private Cache<String,Object> commonCache=null; @PostConstruct//代理此bean时会首先执行该初始化方法 public void init(){ commonCache= CacheBuilder.newBuilder() //设置缓存容器的初始化容量为10(可以存10个键值对) .initialCapacity(10) //最大缓存容量是100,超过100后会安装LRU策略-最近最少使用,具体百度-移除缓存项 .maximumSize(100) //设置写入缓存后1分钟后过期 .expireAfterWrite(60, TimeUnit.SECONDS).build(); } @Override public void setCommonCache(String key, Object value) { commonCache.put(key,value); } @Override public Object getCommonCache(String key) { return commonCache.getIfPresent(key); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
SpringBoot下Mybatis的缓存的实现步骤
说起 mybatis,作为 Java 程序员应该是无人不知,它是常用的数据库访问框架.与 Spring 和 Struts 组成了 Java Web 开发的三剑客--- SSM.当然随着 Spring Boot 的发展,现在越来越多的企业采用的是 SpringBoot + mybatis 的模式开发,我们公司也不例外.而 mybatis 对于我也仅仅停留在会用而已,没想过怎么去了解它,更不知道它的缓存机制了,直到那个生死难忘的 BUG.故事的背景比较长,但并不是啰嗦,只是让读者知道这个 BUG 触
-
SpringCloud Finchley Gateway 缓存请求Body和Form表单的实现
在接入Spring-Cloud-Gateway时,可能有需求进行缓存Json-Body数据或者Form-Urlencoded数据的情况. 由于Spring-Cloud-Gateway是以WebFlux为基础的响应式架构设计,所以在原有Zuul基础上迁移过来的过程中,传统的编程思路,并不适合于Reactor Stream的开发. 网络上有许多缓存案例,但是在测试过程中出现各种Bug问题,在缓存Body时,需要考虑整体的响应式操作,才能更合理的缓存数据 下面提供缓存Json-Body数据或者Form
-
详解Guava Cache本地缓存在Spring Boot应用中的实践
概述 在如今高并发的互联网应用中,缓存的地位举足轻重,对提升程序性能帮助不小.而 3.x开始的 Spring也引入了对 Cache的支持,那对于如今发展得如火如荼的 Spring Boot来说自然也是支持缓存特性的.当然 Spring Boot默认使用的是 SimpleCacheConfiguration,即使用 ConcurrentMapCacheManager 来实现的缓存.但本文将讲述如何将 Guava Cache缓存应用到 Spring Boot应用中. Guava Cache是一个全内
-
在Spring Boot中实现HTTP缓存的方法
缓存是HTTP协议的一个强大功能,但由于某些原因,它主要用于静态资源,如图像,CSS样式表或JavaScript文件,但是,HTTP缓存不仅限于这些,还可以将其用于动态计算的资源. 通过少量工作,您可以加快应用程序并改善整体用户体验.在本文中,您将学习 如何使用内置的HTTP响应缓存机制来实现缓存SpringBoot控制器的结果 . 1.如何以及何时使用HTTP响应缓存? 您可以在应用程序的多个层上进行缓存.数据库具有其缓存存储,Web客户端也在其需要重用的信息.HTTP协议负责网络通信.缓存机
-
springboot使用GuavaCache做简单缓存处理的方法
问题背景 实际项目碰到一个上游服务商接口有10秒的查询限制(同个账号). 项目中有一个需求是要实时统计一些数据,一个应用下可能有多个相同的账号.由于服务商接口的限制,当批量查询时,可能出现同一个账号第一次查询有数据,但第二次查询无数据的情况. 解决方案 基于以上问题,提出用缓存的过期时间来解决. 这时,可用Redis和Guava Cache来解决: 当批量查询时,同一个账号第一次查询有数据则缓存并设置过期时间10s, 后续查询时直接从缓存中取,没有再从服务商查询. 最终采用Guava Cache
-
SpringBoot加入Guava Cache实现本地缓存代码实例
这篇文章主要介绍了SpringBoot加入Guava Cache实现本地缓存代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在pom.xml中加入guava依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>18.0</version>
-
Springboot引入拦截器并放行swagger代码实例
这篇文章主要介绍了Springboot引入拦截器并放行swagger代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Springboot引入拦截器 自定义的拦截器类 Interceptor package cn.zytao.taosir.auth.config; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import j
-
springboot项目访问静态资源的配置代码实例
这篇文章主要介绍了springboot项目访问静态资源的配置代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 这里只是简单记录当上传图片不是放在tomcat其他服务器中时,只是放在磁盘中便可以这样配置,在项目启动后可以访问到磁盘中的资源. @Configuration public class SystemConfigurer implements WebMvcConfigurer { @Value("${jeewx.path.uploa
-
Spring Boot Cache使用方法整合代码实例
参考: Spring Cache扩展功能实现 项目地址 使用本地Caffeine缓存 引入依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>com.github.ben
-
SpringBoot AOP处理请求日志打印功能代码实例
设计原则和思路: 元注解方式结合AOP,灵活记录操作日志 能够记录详细错误日志为运营以及审计提供支持 日志记录尽可能减少性能影响 操作描述参数支持动态获取,其他参数自动记录. 代码实例如下 @Slf4j @Aspect @Configuration public class RequestAopConfig { @Autowired private HttpServletRequest request; private static final ThreadLocal<Long> START_
-
Springboot通过url访问本地图片代码实例
1.引入jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 2.创建配置类 package com.common.config; import org.springframework.beans.factory.annotation.Val
-
SpringBoot解决跨域请求拦截问题代码实例
前言 同源策略:判断是否是同源的,主要看这三点,协议,ip,端口. 同源策略就是浏览器出于网站安全性的考虑,限制不同源之间的资源相互访问的一种政策. 比如在域名https://www.baidu.com下,脚本不能够访问https://www.sina.com源下的资源,否则将会被浏览器拦截. 注意两点: 1.必须是脚本请求,比如AJAX请求. 但是如下情况不会产生跨域拦截 <img src="xxx"/> <a href='xxx"> </a&
-
Springboot实现Java阿里短信发送代码实例
阿里云短信服务还是非常好的,接口稳定,同时还提供SDK,使得企业的接入该服务更加方便.下面来看看阿里云提供的发短信的java实例代码吧 1.接口TestController import java.util.Random; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; import
-
Springboot和Jpa实现学生CRUD操作代码实例
前期准备 使用idea新建个SpringBoot项目 在数据库中建student表 建包 1.编写entity包下实体类Student (一个Javabean规范) package com.example.stu.kudestu.stu.entity; import javax.persistence.*; @Entity @Table(name = "student") //@Entity 应用在实体类上 @Table(name = "student") 应用在实
-
Springboot启用多个监听端口代码实例
前段时间服务有这么个需求,web端的接口需要有web安全相关的整改,但是对内的接口并不需要.所以服务需要多个端口启动,在此记录下 代码如下 @Configuration public class EmbeddedTomcatConfiguration { @Value("${server.additionalPorts}") private String additionalPorts; @Bean public EmbeddedServletContainerFactory serv
随机推荐
- 详解使用Docker容器来源码编译etcd
- Python的SQLalchemy模块连接与操作MySQL的基础示例
- linux系统之间通过nfs网络文件系统挂载设置方法
- MVC4 基础 枚举生成 DropDownList 实用技巧
- 5个JavaScript经典面试题
- 用JavaScript计算在UTF-8下存储字符串占用字节数
- c#使用正则表达式匹配字符串验证URL示例
- Python实现把json格式转换成文本或sql文件
- Python操作CouchDB数据库简单示例
- ie8本地图片上传预览示例代码
- linux下source命令使用详解
- C#实现获取程序路径方法小结
- javascript据option的value值快速设定初始的selected选项
- excellent!——ASCII Art(由目标图象生成ascii)
- 怎样在UNIX系统下安装MySQL
- Android textview 实现长按自由选择复制功能的方法
- Go语言实现自动填写古诗词实例代码
- Flask框架实现给视图函数增加装饰器操作示例
- Java的“Goto”与标签及使用详解
- Spring Cloud Alibaba教程之Sentinel的使用