【问题标题】:Caching java method [duplicate]缓存java方法[重复]
【发布时间】:2019-05-24 09:39:30
【问题描述】:

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

我曾尝试使用 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;
}

StackTrace of requests

@EnableCaching 已启用

【问题讨论】:

  • 您能解释一下上述解决方案是如何不起作用的吗?您是否有错误或只是每次仍在执行该方法而不是访问缓存?
  • 每次运行都会执行
  • 您是否启用了 @EnableCaching 对您的配置类之一的缓存?
  • 我在 @SpringBootApplication 类中启用

标签: java spring-boot caching


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-09
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 2021-09-17
    • 2019-05-09
    相关资源
    最近更新 更多