黑马程序员技术交流社区
标题: 【郑州校区】bos项目笔记之chapter09_系统分析、环境搭建(9) [打印本页]
作者: 谷粒姐姐 时间: 2018-4-12 10:28
标题: 【郑州校区】bos项目笔记之chapter09_系统分析、环境搭建(9)
本帖最后由 谷粒姐姐 于 2018-4-12 10:31 编辑
七、 缓存框架 EhCache 使用缓存可以提高查询数据性能, 对同一批数据进行多次查询时, 第一次查询走数据库,查询数据后,将数据保存在内存中,第二次以后查询 可以直接从内存获取数据,而不需要和数据库进行交互。
控制台抓包分析
每次访问一个需要被权限控制资源时,调用 Realm 的授权方法,根据当前用户查询角色
(role)和权限(permission)信息,每次调用 都会查询一次数据库
问题: 为什么使用 ehcache 而不使用 redis 缓存
1、Shiro 默认对 ehcache 的支持
2、在后台管理系统中 ehcache 使用非常普遍
1. Spring 和 EhCache 框架整合第一步: 在 common_parent 导入 ehcache maven 坐标
Ehcache 开发包
Spring 整合 ehcache 包 spring-context-support 包
第二步: 使用 ehcache ,导入 ehcache.xml 配置文件
解压 ehcache-core.jar 包 ,将 ehcache-failsafe.xml 复制 src/main/resources 改名 ehcache.xml
自定义缓存区
第三步: 配置 spring 整合 ehcache 将 ehcacheManager 交给 spring 管理
默认 Ehcache 提供 CacheManager 提供 addCache()、getCache() 这些方法,原理在内存保存 key-value
2.配置 shiro 整合 ehcache 完成对授权数据缓存把哪些数据作为缓存 key ? 把哪些数据作为缓存 value ?第四步: 配置 shiro 封装缓存管理器
第五步: 将 shiro 的缓存管理器,注入到安全管理器中
应用程序代码 – Subject – SecurityManager – Realm (查询认证和授权数据)
第六步: 对认证数据、授权数据 哪些进行缓存 ? 配置 Realm
注意: 使需要缓存对象,实现 Serializable 接口
java.io.NotSerializableException: cn.itcast.bos.domain.system.User
3. Ehcache 对普通业务数据进行缓存Spring 整合 Ehcache 后, 缓存注解的使用 当 spring 整合缓存框架后,提供了一套注解
第四步: 配置 spring 缓存管理器,封装 ehcache 自带 CacheManager
第五步:在 applicationContext-cache.xml 引入 cache 名称空间
第六步: 激活 spring 缓存注解
第七步: 在被 spring 管理 bean 对象方法上 使用@Cacheable 、@CacheEvict
@Cacheable 应用缓存区,对方法返回结果进行缓存 ---- 用于查询方法
@CacheEvict 清除缓存区数据 --- 用于 增加、修改、删除 方法
对实体类进行序列化
StandardServiceImpl
4.有参数的方法如何对结果数据进行缓存
针对数据在不同条件下进行不同缓存,设置@Cacheable 注解 key 属性
bos项目笔记之chapter08_系统分析、环境搭建(5)
bos项目笔记之chapter09_系统分析、环境搭建(8)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |