当前位置: 首页 > 知识库问答 >
问题:

缓存java方法[duplicate]

祖翰音
2023-03-14

我想缓存重方法的结果,但我出于某种原因,它不会存储在缓存中。

我尝试过使用Spring缓存,但它只在缓存整个api时起作用,我只需要缓存其中的一部分。

@ResponseBody
public Person validateTest(@Param("name") String name) {
    return cache(name);
}

@Cacheable(value = "getName", key = "#name")
public Person cache(String name) {
    Person person = generateString(name);
    return person;
}


public Person generateString(String name) {
    System.out.println("generating");
    Person person = new Person();
    person.setName(name);
    return person;
}



@Data
class Person implements Serializable { 
   private String name;
}

请求跟踪

启用缓存

共有1个答案

松鸣
2023-03-14

您在这里直接调用缓存的方法,这是行不通的(留档几乎不清楚)。重构代码,使@Cacheable方法位于不同的bean中,然后注入该bean(它实际上将被包装在代理中,因此它可以执行缓存),然后调用它。

 类似资料:
  • 我想跨调用缓存方法ID。为此,我得到方法ID: 我的问题是:我是否需要使用NewGlobalRef创建全局引用,或者可以从本地引用获取并保存方法ID(我使用FindClass获取class\u HelloWorld),而不需要全局引用类元数据?

  • 本文向大家介绍java使用hashMap缓存保存数据的方法,包括了java使用hashMap缓存保存数据的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java使用hashMap缓存保存数据的方法。分享给大家供大家参考,具体如下: 更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇

  • 我有一个使用Spring Boot的简单应用程序。我希望允许使用JSR107-JCache进行方法缓存。在教程的帮助下,我编写了以下代码: 使用此POM文件 (依赖“spring-boot-starter-web”用于调用getCountry方法的简单REST服务) 一切都像文档所说的那样工作——方法只调用一次。 现在我想在WildFly 10应用服务器上试用它 我修改了pom文件: 排除tomc

  • 本文向大家介绍CodeIgniter启用缓存和清除缓存的方法,包括了CodeIgniter启用缓存和清除缓存的方法的使用技巧和注意事项,需要的朋友参考一下 Codeigniter支持缓存技术,以达到最快的速度。尽管CI已经相当高效了,但是网页中的动态内容、主机的内存CPU和数据库读取速度等因素直接影响了网页的加载速度。依靠网页缓存,你的网页可以达到近乎静态网页的加载速度,因为他们将程序输出的结果保

  • 是否有可能在内存中实现缓存以避免完全堆消耗? 我的spring boot java应用程序使用内存缓存,过期策略设置为1小时(咖啡因库用于缓存目的)。在此之后,所有缓存实例都处于旧代,需要收集完整的GC。现在,当XMX设置为10GB时,我可以看到经过几个小时的测试,我的缓存包含大约100k个实例,但在heap中(正好是旧一代),我可以找到数百万个缓存对象的实例。是否有可能在内存中使用缓存并避免这种

  • 问题内容: 我想知道,您可以在现有缓存中调用的方法吗?还是在性能关键代码中最好将其存储在本地int中? 当您在调用之间不添加/删除项目时,我希望它确实已缓存。 我对吗? 更新 我不是在谈论内联或类似的东西。我只想知道方法本身是否在内部缓存值,或者每次调用时它都会动态计算。 问题答案: 我想我不会说它是“缓存的”-但是它只是存储在一个字段中,因此它足够快以经常调用。 Sun JDK的实现只是: