CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

spring mvc流程(学到了)spring 三级缓存,springboot之本地缓存-guava与caffeine,

1.springmvc缓存机制

1. 场景描述因项目要使用本地缓存,具体为啥不用redis等,就不讨论,记录下过程,希望能帮到需要的朋友2.解决方案2.1 使用google的guava作为本地缓存初步的想法是使用google的guava,因为本身项目中就有guava的denpency。

2.spring为什么需要三级缓存

2.1.1 pom文件需要3个dependency,如下:org.springframework.boot

3.spring mvc 处理流程

>spring-boot-starter-cacheorg.springframework

4.spring二级缓存与三级缓存

spring-context-support4.3.18.RELEASE

5.说一下 spring mvc 运行流程

>com.google.guavaguava24.0-jre

6.Spring三级缓存

2.1.2 java类(1)GuavaCacheManager新建bean,返回及配置guava的GuavaCacheManagerimport com.google.common.cache.CacheBuilder; 。

7.spring 为什么要三级缓存

import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching;

8.spring 三级缓存的作用

import org.springframework.cache.guava.GuavaCacheManager; import org.springframework.context.annotation

9.spring ioc三级缓存

.Bean; import org.springframework.context.annotation.Configuration; import java.util.concurrent.TimeUnit;

10.spring三级缓存原理

/** * * @auther: 软件老王 */@Configuration@EnableCachingpublicclassGuavaCacheConfig{ @Beanpublic CacheManager cacheManager() { GuavaCacheManager cacheManager = new GuavaCacheManager(); cacheManager.setCacheBuilder( CacheBuilder.newBuilder(). expireAfterWrite(

6, TimeUnit.HOURS). maximumSize(1000)); //软件老王,6小时过期,最大1000条return cacheManager; } }

(2)spring注解标签使用缓存/** * * @auther: 软件老王 */@Cacheable(value = “ruanjianlaowang”)public VO getUserInfo(String token) { VO vo = userauthClient.verifyToken(token);

return vo; } guava本地缓存完成2.2 spring框架提供的本地缓存方案spring中已经提供了抽象类,默认只需要配置加载jar包,配置type就可以了,但是从spring5开始,将guava的剔除掉了,替换成了caffeine,spring做了测试,作为本地缓存caffeine比guava要高出好多,我们也改成了caffeine作为本地缓存。

springboot与guava、caffeine等本地缓存,springboot1的时候还有guava,springboot2里面就把guava的缓存接口去掉了,所以前面guava本地缓存才需要定义Configuration,在这里面的话,就只需要在配置文件里面定义类型就会自动注入了。

2.3 caffeine本地缓存2.3.1 pom文件com.github.ben-manes.caffeine

>caffeine2.8.02.3.2 配置文件spring:cache:type:caffeinecache-names:

bc.gateway.utcaffeine:# spec: maximumSize=5000,expireAfterWrite=20sspec:maximumSize=5000,expireAfterAccess=3600s

具体参数含义:/** * @auther: 软件老王 */ • initialCapacity=[integer]: 初始的缓存空间大小 • maximumSize=[long]: 缓存的最大条数 • maximumWeight=[

long]: 缓存的最大权重 • expireAfterAccess=[duration]: 最后一次写入或访问后经过固定时间过期 • expireAfterWrite=[duration]: 最后一次写入后经过固定时间过期 • refreshAfterWrite=[duration]: 创建缓存或者最近一次更新缓存后经过固定的时间间隔,刷新缓存

2.3.3 使用方式还是spring的标签不用动:/** * * @auther: 软件老王 */@Cacheable(value = “ruanjianlaowang”)public VO getUserInfo(String token) { VO vo = userauthClient.verifyToken(token);

return vo; } 2.4 关于spring缓存标签的说明四个标签:(1)@Cacheable,首先在缓存中查询,没有的话,进方法执行,执行完成后返回值放缓存;(2)@CachePut,不进行查询判断,直接新增或者更新缓存内容,类似add或update;

(3)@CacheEvict,直接清除,类似delete。(4)@Caching,1,2,3个组合

更多信息请关注@软件老王,关注不迷路,软件老王和他的IT朋友们,分享一些他们的技术见解和生活故事。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容