我有一個使用多種方法的服務,並試圖使用Spring @Cacheable
註釋來緩存它們。一切正常,除非我發現數組作爲方法參數的方法沒有被緩存。考慮到數組可以具有不同的值,這有點合理,但我仍然認爲這是可能的。在Spring中使用數組參數的方法進行緩存
以下方法緩存:
@Cacheable("myCache")
public Collection<Building> findBuildingByCode(String buildingCode) {...}
@Cacheable("myCache")
public Collection<Building> getBuildings() {...}
但是,如果我改變findBuildingByCode
方法要麼以下的,它是不緩存:
@Cacheable("myCache")
public Collection<Building> findBuildingByCode(String[] buildingCode) {...}
@Cacheable("myCache")
public Collection<Building> findBuildingByCode(String... buildingCode) {...}
下面是相關的Spring XML配置:
<!-- Cache beans -->
<cache:annotation-driven/>
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
p:cache-manager-ref="ehcache" />
<!-- EhCache library setup -->
<bean id="ehcache"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" />
的Ehcache配置:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
updateCheck="false">
<diskStore path="java.io.tmpdir/ehcache" />
<!-- Default settings -->
<defaultCache eternal="false" maxElementsInMemory="1"
overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"
timeToLiveSeconds="100" memoryStoreEvictionPolicy="LRU" />
<!-- Other caches -->
<cache name="myCache" eternal="false" maxElementsInMemory="500"
overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0"
timeToLiveSeconds="43200" memoryStoreEvictionPolicy="LRU" />
</ehcache>
這是已知的功能或錯誤?
如何像arrayList hashMap集合? – happyyangyuan
可以請你回答這個https://stackoverflow.com/questions/46936689/how-to-write-spring-eh-cache-key-spelexpression-expression-properly-when-the-m – Sanka