একই শিমের অন্য কোনও পদ্ধতি থেকে ক্যাশেড পদ্ধতিতে কল করার সময় স্প্রিং ক্যাশে কাজ করছে না।
আমার সমস্যাটি পরিষ্কার উপায়ে ব্যাখ্যা করার জন্য এখানে একটি উদাহরণ রয়েছে।
কনফিগারেশন:
<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"/>
ক্যাশেড পরিষেবা:
@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);
...
}
}
ফলাফল :
aService.getEmployeeData(someDate);
output: Cache is not being used
aService.getEmployeeData(someDate);
output:
aService.getEmployeeEnrichedData(someDate);
output: Cache is not being used
getEmployeeDataপদ্ধতি কল ব্যবহারের ক্যাশে employeeDataদ্বিতীয় কলে আশানুরূপ। ক্লাসের getEmployeeDataমধ্যে যখন পদ্ধতিটি কল করা হয় AService(ইন getEmployeeEnrichedData), তখন ক্যাশে ব্যবহৃত হচ্ছে না।
এইভাবে কী বসন্তের ক্যাশে কাজ করে বা আমি কিছু মিস করছি?
someDateপরমের জন্য একই মান ব্যবহার করছেন ?