@Caching @CacheEvict无法使用AOP(或组件)

时间:2016-08-16 09:05:09

标签: spring hibernate ehcache spring-aop

我徘徊为什么我的 @Caching @CacheEvict 注释在我将它放在同样具有@component注释的@Aspect时没有做任何事情。 它是否与@Compnent有关?还是@Aspect?

我错过了什么?

@Aspect
@Component
public class cacheAspect {




    @After("@annotation(cacheEvictAnnotation)")
    public Object clearCachePoint(UHQueryCacheEvict uhQueryCacheEvict) throws  Throwable {
        evict();
    }

    @Caching (evict = { @CacheEvict(value= "some_key", allEntries=true) })
    evict(){
    }
}

当方面运行时,它将进入方法 evict ,但会忽略注释。这意味着缓存不会被驱逐。

注意:代码中的每个方法都会触发该方面,该方法具有 @cacheEvictAnnotation * 注释。 (通常采用服务方式)

1 个答案:

答案 0 :(得分:0)

如评论所述,问题来自直接从evict()调用的clearCachePoint方法,这会阻止任何方面的行为发生。

如果在运行时通过代理包装具有所需行为的具体类型来强制执行注释,则无法从相同类型调用方法并期望通过代理。