cache.put(new Element(key,(Serializable)value));

放入缓存中的value必须序列化,Java原生类型 char、int ,原生类型的包装类String、Character、Integer、Number...和集合List的实现类ArrayList都已经实现了Serializable接口,它们都可以直接放到缓存中。这里要注意的是,在方法返回值中经常用到的Iterator,并没有实现Serializable接口,所以Cache 不能缓存返回值类型为Iterator的方法。


 还有一点要注意的是,如果我们要做缓存的方法是在bean的生命周期的初始化阶段调用的(例如setter,init),此时方法缓存拦截器还没被调用执行,那么缓存将不起作用,如做了下面的配置:

<bean id="OrganizationManagerMethodCache" class="org.springframework.aop.framework.ProxyFactoryBean">
   <property name="target">
   <bean class="com.wzj.rbac.ServiceFacade.OrganizationManager" init-method="init" autowire="byName"/>
   </property>
   <property name="interceptorNames">
   <list>
   <value>methodCachePointCut</value>
   </list>
   </property>
   </bean>
   在init初始方法里面调用的缓存方法将失效。

------君临天下,舍我其谁------