目录:
1.springmvc缓存机制
2.spring为什么需要三级缓存
3.spring mvc 处理流程
4.spring二级缓存与三级缓存
5.说一下 spring mvc 运行流程
6.Spring三级缓存
7.spring 为什么要三级缓存
8.spring 三级缓存的作用
9.spring ioc三级缓存
10.spring三级缓存原理
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朋友们,分享一些他们的技术见解和生活故事。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容