1 缓存框架EhCache的简单使用:
2 1.Spring和EhCache框架整合
3 1.1导入jar包
4 <dependencies>
5 <dependency>
6 <groupId>net.sf.ehcache</groupId>
7 <artifactId>ehcache-core</artifactId>
8 <version>2.6.11</version>
9 </dependency>
10 <dependency>
11 <groupId>org.springframework</groupId>
12 <artifactId>spring-context-support</artifactId>
13 <version>${spring.version}</version>
14 </dependency>
15 </dependencies>
16 1.2引入ehcache.xml的配置文件
17 <?xml version="1.0" encoding="UTF-8"?>
18 <beans xmlns="http://www.springframework.org/schema/beans"
19 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
20 xmlns:cache="http://www.springframework.org/schema/cache"
21 xsi:schemaLocation="
22 http://www.springframework.org/schema/beans
23 http://www.springframework.org/schema/beans/spring-beans.xsd
24 http://www.springframework.org/schema/cache
25 http://www.springframework.org/schema/cache/spring-cache.xsd ">
26 <!-- 缓存配置 -->
27 <bean id="ehCacheManager"
28 class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
29 <property name="configLocation" value="classpath:ehcache.xml" />
30 </bean>
31 <!-- shiro封装cacheManager -->
32 <bean id="shiroCacheManager"
33 class="org.apache.shiro.cache.ehcache.EhCacheManager">
34 <property name="cacheManager" ref="ehCacheManager" />
35 </bean>
36 <!-- spring 封装ehcache缓存管理器 -->
37 <bean id="springCacheManager"
38 class="org.springframework.cache.ehcache.EhCacheCacheManager">
39 <property name="cacheManager" ref="ehCacheManager" />
40 </bean>
41 <!-- 激活spring 缓存注解 -->
42 <cache:annotation-driven cache-manager="springCacheManager"/>
43 </beans>
44 2.配置shiro整合ehcache完成对授权数据缓存
45 2.1配置applicationContext.xml
46 <!-- 安全管理器 -->
47 <bean id="securityManager"
48 class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
49 <property name="realm" ref="bosRealm" />
50 <property name="cacheManager" ref="shiroCacheManager" />
51 </bean>
52 <!-- 配置Realm -->
53 <bean id="bosRealm" class="cn.itcast.bos.realm.BosRealm">
54 <!-- 缓存区的名字 就是 ehcache.xml 自定义 cache的name -->
55 <property name="authorizationCacheName" value="bos" />
56 </bean>
57 2.2取消realm类上面的service注解
58 2.3给对应的实体类实现Serializable接口
59 3.Ehcache对普通业务数据进行缓存
60 在被 spring 管理 bean 对象方法上 使用@Cacheable 、@CacheEvict
61 @Cacheable 应用缓存区,对方法返回结果进行缓存 ---- 用于查询方法
62 @Cacheable("standard")
63 @CacheEvict 清除缓存区数据 --- 用于 增加、修改、删除 方法
64 @CacheEvict(value="standard",allEntries=true)
65 4.有参数的方法如何对结果数据进行缓存
66 针对数据在不同条件下进行不同缓存,设置@Cacheable 注解key属性
67 @Cacheable(value="standard",key="#pa.pageNumber+'_'+#pa.pageSize")
68 小结:针对采用ehcache技术的模块,再进行数据操作是时,只会走一次数据库,
69 接下来的每一次操作都是经过缓存从内存中获取的.