如何缓存来自同一个 class 的其他方法?
how to cache other methods from the same class?
我正在使用 JCache 的 Ehcache 实现。
比方说,我 class Test
。在这个 class 中,我有两种方法:methodA
和 methodB
。 methodB
有注释 @CacheResult(cacheName = "methodB")
.
根据这些信息,您可能会猜测我想要缓存方法 methodB
并且 methodA
应该使用此缓存。
但是...它不起作用。当我使用来自同一个 class 的方法时,似乎这个注释没有触发它的拦截器。如果我创建 class Test2
并将方法 methodB
移动到此 class - 然后,正如预期的那样,将缓存此方法的结果。
如何从同一个 class 启用缓存方法?
至于现在,这似乎是不可能的 - 如果我们坚持 CacheResult
注释。
这是因为当 class 通过 this
引用而不是 CDI 使用它的方法时,拦截器没有正确触发。如果我们想缓存它们,我们需要使用另一种方式或者只调用一些静态方法,比如说 cacheMe
,在每个 private
方法中。
我正在使用 JCache 的 Ehcache 实现。
比方说,我 class Test
。在这个 class 中,我有两种方法:methodA
和 methodB
。 methodB
有注释 @CacheResult(cacheName = "methodB")
.
根据这些信息,您可能会猜测我想要缓存方法 methodB
并且 methodA
应该使用此缓存。
但是...它不起作用。当我使用来自同一个 class 的方法时,似乎这个注释没有触发它的拦截器。如果我创建 class Test2
并将方法 methodB
移动到此 class - 然后,正如预期的那样,将缓存此方法的结果。
如何从同一个 class 启用缓存方法?
至于现在,这似乎是不可能的 - 如果我们坚持 CacheResult
注释。
这是因为当 class 通过 this
引用而不是 CDI 使用它的方法时,拦截器没有正确触发。如果我们想缓存它们,我们需要使用另一种方式或者只调用一些静态方法,比如说 cacheMe
,在每个 private
方法中。