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

放入緩存中的value必須序列化,Java原生類型 char、int ,原生類型的包裝類String、Character、Integer、Number...和集合List的實(shí)現(xiàn)類ArrayList都已經(jīng)實(shí)現(xiàn)了Serializable接口,它們都可以直接放到緩存中。這里要注意的是,在方法返回值中經(jīng)常用到的Iterator,并沒(méi)有實(shí)現(xiàn)Serializable接口,所以Cache 不能緩存返回值類型為Iterator的方法。


 還有一點(diǎn)要注意的是,如果我們要做緩存的方法是在bean的生命周期的初始化階段調(diào)用的(例如setter,init),此時(shí)方法緩存攔截器還沒(méi)被調(diào)用執(zhí)行,那么緩存將不起作用,如做了下面的配置:

<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初始方法里面調(diào)用的緩存方法將失效。

------君臨天下,舍我其誰(shuí)------