我在 Spring-4 应用程序中从另一个可缓存方法调用可缓存方法时遇到问题,请阅读以下步骤以获得更多说明。
1) MyAppStartup 类在服务器启动时调用,它调用 convertXMLToObject 方法并将数据存储在 myInfo 缓存中。
2) 从某个控制器调用 getFormList(String myId) 方法,理想情况下,此方法不会调用 convertXMLToObject() 方法,因为在步骤 1 中,数据已经在缓存中,但无法正常工作。
3) 当第二次调用 getFormList(String myId) 时,它没有被调用并且数据从缓存中返回,即缓存对于这个方法工作正常。
@Component
public class MyAppStartup {
@Autowired
private MyHelperClass myHelperClass;
@EventListener(ContextRefreshedEvent.class)
public void contextRefreshedEvent() throws Exception {
logger.debug("Application Started :: Call to load XML information into Cache");
myHelperClass.convertXMLToObject();
}
}
@Service
public class MyHelperClass {
@Cacheable(value = "myInfoById", key = "{#myId}")
public List<XMLFormData> getFormList(String myId){
List<XMLFormData> xmlFormData = convertXMLToObject();
return xmlFormData;
}
@Cacheable(value = "myInfo")
public List<XMLFormData> convertXMLToObject() {
//code to read xml and populate into java pojo class and return list
}
}
//configuration in ehcache.xml
<cache name="myInfoById"
eternal="false"
overflowToDisk="false"
maxEntriesLocalHeap="1000"
timeToIdleSeconds="0"
timeToLiveSeconds="0"
memoryStoreEvictionPolicy="LRU" />
<cache name="myInfo"
eternal="false"
overflowToDisk="false"
maxEntriesLocalHeap="1000"
timeToIdleSeconds="0"
timeToLiveSeconds="0"
memoryStoreEvictionPolicy="LRU" />
请帮忙,在此先感谢:)