博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springbootii-cache 基于注解的声明式缓存
阅读量:4942 次
发布时间:2019-06-11

本文共 1325 字,大约阅读时间需要 4 分钟。

测试版本springboo2.0.4

 

1、使用缓存注解

通用属性解释:

value属性:要使用缓存的名称

key属性:使用SpEL表达式自定义缓存Key,

例如:#name—以参数name作为自定义缓存Key,

#result.name—以返回值结果的name属性作为自定义缓存Key

 

(1)@Cacheable注解

如果没有缓存则会执行方法并将返回值缓存,如果有缓存时,不会执行方法而是直接返回缓存中的值

/**     * cacheNames 设置缓存的值     * key:指定缓存的key,这是指参数id值。key可以使用spEl表达式     */    @Cacheable(value = "userCache", key = "#id", unless="#result == null")    public User getById(int id) {        logger.info("获取用户start...");        return userMapper.selectById(id);    }

 

 

@Cacheable(value = "allUsersCache", unless = "#result.size() == 0")    public List
getAllUsers() { logger.info("获取所有用户列表"); return userMapper.selectList(null); }

当返回的结果size == 0时 不缓存

 

(2)@CachePut注解

不管有没有缓存都会执行方法并将结果缓存起来

 

(3)@CacheEvict注解

移除指定缓存

/**     * 创建用户,同时使用新的返回值的替换缓存中的值     * 创建用户后会将allUsersCache缓存全部清空     */    @Caching(            put = {@CachePut(value = "userCache", key = "#user.id")},            evict = {@CacheEvict(value = "allUsersCache", allEntries = true)}    )    public User createUser(User user) {        logger.info("创建用户start..., user.id=" + user.getId());        userMapper.insert(user);        return user;    }

 

创建一个新用户会缓存,然后清空掉所有用户的缓存

注意:

a.User对象需要实现序列化接口

b.只有@CacheEvict注解的方法返回值可以为void

 参考项目

 

 

参考:

https://my.oschina.net/u/3773384/blog/1795296

转载于:https://www.cnblogs.com/lyon91/p/10108531.html

你可能感兴趣的文章
SQLServer 错误: 15404,无法获取有关 Windows NT 组
查看>>
html5全局属性
查看>>
【转】Android Hook框架Xposed详解
查看>>
Android 有用代码片段总结
查看>>
英语各种时态例句
查看>>
从下往上看--新皮层资料的读后感 第三部分 70年前的逆向推演- 从NN到ANN
查看>>
(转)系统引导管理器GRUB详解
查看>>
数据访问C#入门经典第21章-读写压缩数据
查看>>
PHP超时处理全面总结(转)
查看>>
利用python进行数据分析--pandas入门2
查看>>
[zz]使用 libevent 和 libev 提高网络应用性能
查看>>
Linux故障处理最佳实践
查看>>
6标准文件读写
查看>>
jsTree 核心功能(core functionality) API
查看>>
Perl oop链接数据库
查看>>
网络虚拟化我眼中的OpenFlow
查看>>
[leetcode] 3. Longest Substring Without Repeating Characters
查看>>
06 Frequently Asked Questions (FAQ) 常见问题解答 (常见问题)
查看>>
获取判断IE版本 TypeError: Cannot read property 'msie' of undefined
查看>>
tcpreplay安装使用
查看>>