java - 在 Spring 服务器启动期间如何使用缓存中填充的数据?

标签 java spring spring-mvc ehcache-2


我在 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/

相关文章:

java - 这样做有效吗? (c、c++、java)

java - 平面上的一组点

java - 在 spring 中使用多对一映射时获得无限的 Json 响应

java - JdbcTemplate 不支持 Autowiring

java - Akka:可序列化的 Prop

java - Spring 数据。存储库返回错误的Id(实体数据正确)

java - Spring集成-入站 channel 适配器是多线程的吗?

spring - Spring 3 MVC 中的 HttpSession

java - Spring 是从众多接口(interface)实现中单独挑选出一个接口(interface)实现吗?

java - JDBC Appender 不写入异常堆栈跟踪