2017-10-11 67 views
0

下工作(在逐出結果執行):春天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作爲緩存機制。

回答

0

當你在課堂內調用你的方法時,Aop並不是一團糟。 當另一個類調用方法時它正在工作。 所以你可以在另一個服務中定義deleteFoo。