如何缓存来自同一个 class 的其他方法?

how to cache other methods from the same class?

我正在使用 JCache 的 Ehcache 实现。

比方说,我 class Test。在这个 class 中,我有两种方法:methodAmethodBmethodB 有注释 @CacheResult(cacheName = "methodB").

根据这些信息,您可能会猜测我想要缓存方法 methodB 并且 methodA 应该使用此缓存。

但是...它不起作用。当我使用来自同一个 class 的方法时,似乎这个注释没有触发它的拦截器。如果我创建 class Test2 并将方法 methodB 移动到此 class - 然后,正如预期的那样,将缓存此方法的结果。

如何从同一个 class 启用缓存方法?

至于现在,这似乎是不可能的 - 如果我们坚持 CacheResult 注释。

这是因为当 class 通过 this 引用而不是 CDI 使用它的方法时,拦截器没有正确触发。如果我们想缓存它们,我们需要使用另一种方式或者只调用一些静态方法,比如说 cacheMe,在每个 private 方法中。