小编Muk*_*esh的帖子

在Spring中使用@Cacheable和@CacheEvict

我开发了一种使用@Cacheable注释的方法。代码是:

   @Cacheable(value="reporties" , key="{#root.methodName,#manager.name}")
   public List<Employee> getReportiesForManager(Employee manager){
     // code to fetch reporties its a Spring JDBC call
   }
Run Code Online (Sandbox Code Playgroud)

现在,我想在发生一些事件后驱逐此缓存:

  • 一些与经理相关的报告已更新(添加或删除)。

之后,与管理器相关的缓存应该被驱逐,这样应用程序将获取新的数据,而不是使用该缓存中现有的数据。我为此开发了以下方法:

@CacheEvict(value="reporties",key="{#name}")
public void evictReportiesCache(String name){}
Run Code Online (Sandbox Code Playgroud)

我在更新管理器及其报告者关系的方法内部调用。然而,这个间歇性地工作,我不确定这是否是逐出缓存的正确方法。Cacheable 也用作#root.methodName密钥的一部分。

有人可以帮我清除缓存吗?

java spring caching

5
推荐指数
1
解决办法
3万
查看次数

方法调用转换

我试图了解如何通过转换调用重载方法.让我用我正在尝试的示例解释我的问题

public class Autoboxing {

    public void meth(Integer i){
        System.out.println("Integer");
    }
    public void meth(long i){
        System.out.println("Long");
    }
    public void meth(int... i){
        System.out.println("int");
    }

    public void meth(Object i){
        System.out.println("Object");
    }

    public static void main(String[] args) {
        Autoboxing box= new Autoboxing();
        box.meth(5);
    }
}
Run Code Online (Sandbox Code Playgroud)

这里的输出是:长

为什么在Wrapper Integer中调用带有参数long的方法.请解释.

java autoboxing

4
推荐指数
1
解决办法
67
查看次数

标签 统计

java ×2

autoboxing ×1

caching ×1

spring ×1