Как кэшировать другие методы из того же класса?

Я использую Ehcache реализацию JCache.

Скажем, у меня есть класс Test, В этом классе у меня есть два метода: methodA а также methodB, methodB имеет аннотацию @CacheResult(cacheName = "methodB"),

Из этой информации можно догадаться, что я хотел бы иметь кешированный метод methodB а также methodA должен использовать этот кеш.

Но это не работает. Когда я использую методы из того же класса, кажется, что эта аннотация не запускает свой перехватчик. Это работает, хотя, если я создаю класс Test2 и метод перемещения methodB в этот класс - тогда, как и ожидалось, результат этого метода кэшируется.

Как я могу включить методы кэширования из того же класса?

1 ответ

Решение

На данный момент это кажется невозможным - если мы будем придерживаться CacheResult аннотаций.

Это потому, что перехватчики не запускаются правильно, когда класс использует свои методы this ссылка - а не CDI. Если мы хотим их кешировать, нам нужно использовать другой способ или просто вызвать какой-то статический метод, скажем, cacheMeвнутри каждого private метод.

Другие вопросы по тегам