A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 谷粒姐姐 于 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)

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马