Cache musim semi tidak berfungsi saat memanggil metode cache dari metode lain dari kacang yang sama.
Berikut adalah contoh untuk menjelaskan masalah saya dengan jelas.
Konfigurasi:
<cache:annotation-driven cache-manager="myCacheManager" />
<bean id="myCacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
<property name="cacheManager" ref="myCache" />
</bean>
<!-- Ehcache library setup -->
<bean id="myCache"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:shared="true">
<property name="configLocation" value="classpath:ehcache.xml"></property>
</bean>
<cache name="employeeData" maxElementsInMemory="100"/>
Layanan dalam cache:
@Named("aService")
public class AService {
@Cacheable("employeeData")
public List<EmployeeData> getEmployeeData(Date date){
..println("Cache is not being used");
...
}
public List<EmployeeEnrichedData> getEmployeeEnrichedData(Date date){
List<EmployeeData> employeeData = getEmployeeData(date);
...
}
}
Hasil:
aService.getEmployeeData(someDate);
output: Cache is not being used
aService.getEmployeeData(someDate);
output:
aService.getEmployeeEnrichedData(someDate);
output: Cache is not being used
The getEmployeeData
penggunaan metode panggilan-cache employeeData
dalam panggilan kedua seperti yang diharapkan. Tetapi ketika getEmployeeData
metode dipanggil di dalam AService
kelas (dalam getEmployeeEnrichedData
), Cache tidak digunakan.
Apakah ini cara kerja cache musim semi atau saya melewatkan sesuatu?
someDate
param?