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