春天Redis的缓存不驱逐

问题描述:

下工作(在逐出结果执行):春天Redis的缓存不驱逐

fooController { 
    @ApiEndpoint 
    public delete(id) { 
     fooService.deleteFoo(id) 
    } 
} 

fooService { 
    @CacheEvict(value = "cache1", key = "#id") 
    public void deleteFoo(Long id) { 
     //delete logic here 
    } 
} 

但是,这并不正常工作(没有什么是从缓存逐出):

fooController { 
    @ApiEndpoint 
    public delete(name) { 
     fooService.deleteFoo2(name) 
    } 
} 

fooService { 
    public void deleteFoo2(String name) { 
     //delete logic here 
     deleteFoo(name.getId()) 
    } 

    @CacheEvict(value = "cache1", key = "#id") 
    public void deleteFoo(Long id) { 
     //delete logic here 
    } 
} 

为什么我的@CacheEvict注释仅在从控制器直接调用该方法时调用?

我使用Redis作为缓存机制。

当你在课堂内调用你的方法时,Aop并不是一团糟。 当另一个类调用方法时它正在工作。 所以你可以在另一个服务中定义deleteFoo。