[英]EhCache - servlet caching
我正在為位於 servlet 中的方法制作緩存解決方案。
Servlet 如下所示:
public class DataOptimizedServlet extends DataServlet {
...
@Override
@Cacheable(value = "dataOptimized", key = "#req.getRequestURI()")
public byte[] getData(HttpServletRequest req) {
// data retrieval logic
}
...
}
在 ehcache.xml 我有以下配置:
<cache alias="dataOptimized">
<expiry>
<ttl unit="hours">30</ttl>
</expiry>
<resources>
<heap unit="entries">20000</heap>
<offheap unit="MB">200</offheap>
</resources>
</cache>
同樣在ctx-cache.xml
文件中還有以下配置(並且這個文件是在web.xml
導入的):
<cache:annotation-driven cache-manager="ehCacheManager" />
<bean id="ehCacheManager" class="org.springframework.cache.jcache.JCacheCacheManager">
<property name="cacheManager">
<bean class="org.springframework.cache.jcache.JCacheManagerFactoryBean" p:cacheManagerUri="classpath:ehcache.xml" />
</property>
</bean>
但它不起作用,方法getData
仍然會被相同的 URL 命中。 我有很多@Cacheables
在一個項目中工作並以相同的方式配置,但沒有一個直接在 servlet 中(它們在服務中)。
我錯過了什么?
你在用Spring嗎? 如果是,請考慮 spring 文檔spring doc說:“使用代理時,您應該僅將 @Cache* 注釋應用於具有公共可見性的方法。如果您使用這些注釋對受保護、私有或包可見的方法進行注釋,則不會出現錯誤提出,但注釋的方法不顯示配置的緩存設置。如果您需要注釋非公共方法,因為它更改字節碼本身,請考慮使用 AspectJ(見下文)。” 因此,您應該將方法可見性更改為 protected to public
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.