用Spring和EHCache实现方法结果缓存所注意的问题
2004-12-25 13:49
651 查看
我们知道,Cache为ehcache.xml配置文件里面所定义的缓存类别,获取某一特定的缓存类别的方法如下:
Cache cache= cacheManager.getCache(cacheName);
cacheName为想获取的缓存类别名。然后象下面方法把某一对象放入上面定义的缓存:
cache.put(new Element(key,(Serializable)value));
key为 放入该缓存中的对象的索引值,value为放入该缓存中key所对应的对象。我们看到,放入缓存中的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初始方法里面调用的缓存方法将失效。
Cache cache= cacheManager.getCache(cacheName);
cacheName为想获取的缓存类别名。然后象下面方法把某一对象放入上面定义的缓存:
cache.put(new Element(key,(Serializable)value));
key为 放入该缓存中的对象的索引值,value为放入该缓存中key所对应的对象。我们看到,放入缓存中的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初始方法里面调用的缓存方法将失效。
相关文章推荐
- spring-boot整合ehcache实现缓存机制的方法
- spring+ehcache实现的缓存查询参数。
- 问题:C#根据生日计算属相;结果:C#实现根据年份计算生肖属相的方法
- ehcache-02 : spring整合ehcache 注解实现查询缓存,并实现实时缓存更新或删除
- Spring Data Jpa 自定义方法实现问题
- spring和ehcache整合,实现基于注解的缓存实现
- 利用Spring AOP 缓存方法结果集
- 37. Spring Boot集成EHCache实现缓存机制【从零开始学Spring Boot】
- Spring Hibernate sqlquery 查询结果 缓存问题
- Spring 整合redis集群 实现 以及过程中需要注意的问题点
- 【spring-boot】spring-boot集成ehcache实现缓存机制
- 在表示层禁用浏览器缓存的方法,以解决应用开发不能即时刷新体现修改结果的问题
- EJB AOP + Ehcache实现EJB方法缓存
- vue+springboot前后端分离实现单点登录跨域问题解决方法
- spring-boot之spring-boot整合ehcache实现缓存机制
- Spring AOP +EHcache为Service层方法增加缓存
- SpringMVC+mybatis+maven+Ehcache缓存实现
- Spring + ehcache 缓存配置,注解实现
- spring+ehCache+redis多级缓存自定义实现
- 详解springboot整合ehcache实现缓存机制