首先,您需要在应用上下文中创建一个Ehcache CacheManager单例,如下所示:
<bean id="myEhCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:my-ehcache.xml"/>
</bean>
这里configLocation
被设置为从类路径加载或使用value="/WEB-INF/my-ehcache.xml"
。
在你的控制器中,只需注入CacheManager
实例:
@Controller
public class MyUniqueService {
@Resource(name="myEhCacheManager")
private CacheManager cacheManager;
...
}
或者,如果你想完全使用自动装配的方法,请执行:
<bean class="org.springframework.cache.ehcache.EhCacheCacheManager">
<property name="cacheManager">
<bean class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="/WEB-INF/ehcache.xml"/>
</bean>
</property>
</bean>
按照以下方式设置您的类:
@Controller
public class MyUniqueService {
@Autowired
private org.springframework.cache.CacheManager cacheManager;
public org.springframework.cache.Cache getUniqueObjectCache() {
return cacheManager.getCache("uniqueObjectCache");
}
}
uniqueObjectCache
对应于你在 ehcache.xml
缓存定义中的此缓存实例:
<cache name="uniqueObjectCache"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
memoryStoreEvictionPolicy="LRU"
transactionalMode="off"/>
没有一种方法可以注入一个实际的缓存实例,但是如上所示,您可以注入一个缓存管理器并使用它来获取您感兴趣的缓存。
@Autowired
中使用@Qualifier('cacheBeanId')
即可。 - moshen