我在 Spring-4 应用程序中从另一个可缓存方法调用可缓存方法时遇到问题,请阅读以下步骤以获取更多说明。
1)服务器启动时调用MyAppStartup类,它调用convertXMLToObject方法并将数据存储在myInfo缓存中。
2) getFormList(String myId) 方法是从某个 Controller 调用的,理想情况下该方法不会调用 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" />
请帮忙, 预先感谢:)
最佳答案
我得到了解决方案,而不是从另一个可缓存方法“getFormList(String myId)”调用可缓存方法“convertXMLToObject()”,只需从调用方法“getFormList(String myId)”的地方调用convertXMLToObject()方法并将所需数据传递给方法“getFormList(String myId)”。
关于java - 在 Spring 服务器启动期间如何使用缓存中填充的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58957957/