![](/img/trans.png)
[英]How to cache data during application startup in Spring boot application
[英]How can i use populated data in cache during server startup in Spring?
我在 Spring-4 應用程序中從另一個可緩存方法調用可緩存方法時遇到問題,請閱讀以下步驟以獲得更多說明。
1) MyAppStartup class 在服務器啟動時調用,它調用 convertXMLToObject 方法並將數據存儲在 myInfo 緩存中。
2) 從一些 controller 調用 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" />
請幫忙,在此先感謝:)
我得到了解決方案,而不是從另一個可緩存方法“getFormList(String myId)”調用可緩存方法“convertXMLToObject()”,只需從調用方法“getFormList(String myId)”的地方調用convertXMLToObject()方法並通過要求數據到方法“getFormList(String myId)”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.