我徘徊为什么我的 @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 * 注释。 (通常采用服务方式)
答案 0 :(得分:0)
如评论所述,问题来自直接从evict()
调用的clearCachePoint
方法,这会阻止任何方面的行为发生。
如果在运行时通过代理包装具有所需行为的具体类型来强制执行注释,则无法从相同类型调用方法并期望通过代理。