Как кэшировать другие методы из того же класса?
Я использую Ehcache реализацию JCache.
Скажем, у меня есть класс Test
, В этом классе у меня есть два метода: methodA
а также methodB
, methodB
имеет аннотацию @CacheResult(cacheName = "methodB")
,
Из этой информации можно догадаться, что я хотел бы иметь кешированный метод methodB
а также methodA
должен использовать этот кеш.
Но это не работает. Когда я использую методы из того же класса, кажется, что эта аннотация не запускает свой перехватчик. Это работает, хотя, если я создаю класс Test2
и метод перемещения methodB
в этот класс - тогда, как и ожидалось, результат этого метода кэшируется.
Как я могу включить методы кэширования из того же класса?
1 ответ
На данный момент это кажется невозможным - если мы будем придерживаться CacheResult
аннотаций.
Это потому, что перехватчики не запускаются правильно, когда класс использует свои методы this
ссылка - а не CDI. Если мы хотим их кешировать, нам нужно использовать другой способ или просто вызвать какой-то статический метод, скажем, cacheMe
внутри каждого private
метод.