我正在开发一个 Web 应用程序,我在其中编写了一个方法,在该方法中我调用了一个 json url 并对其进行解析并存储在一个 pojo 类中。
我只是使用methodcacheinterceptor概念缓存这个方法,我的xml配置如下:
<bean id="methodCacheInterceptor"
class="web.app.services.MethodCacheInterceptor">
<property name="cache">
<ref local="methodCache" />
</property>
</bean>
<bean id="methodCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">
<property name="cacheManager">
<ref local="cacheManager" />
</property>
<property name="cacheName">
<value>videoItemsCache</value>
</property>
</bean>
<bean id="cacheManager"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation">
<value>/WEB-INF/ehcache.xml</value>
</property>
</bean>
<bean id="methodCachePointCut"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref local="methodCacheInterceptor" />
</property>
<property name="patterns">
<list>
<value>.*web.app.services.ItemCollectionImpl.getCollection</value>
<value>.*web.app.services.ItemCollectionImpl.buildCollection</value>
</list>
</property>
</bean>
我设置了 20 分钟的缓存时间,效果很好!
我想要的只是一个特定的活动,我想覆盖和清除那些缓存,下次我访问页面时,我希望执行整个方法,并且不应该从缓存中加载数据(我想清除缓存)特定的活动。
供参考
CacheManager.getInstance().getCacheNames() - 这将打印我在 xml 配置中给出的缓存名称。
我试过 CacheManager.getInstance().clearAll(), removeall 方法,但它不起作用!!
任何人都在这里帮助我!
提前致谢。