Я создал аспект AspectJ, который отлично работает в приложении Spring. Теперь я хочу добавить кэширование, используя аннотацию Spring Cacheable.
Чтобы убедиться, что @Cacheable подхватывается, я использую имя несуществующего менеджера кеша. Обычное поведение во время выполнения заключается в том, что генерируется исключение. Но в этом случае исключение не генерируется, что говорит о том, что аннотация @Cacheable не применяется к перехватывающему объекту.
/* { package, some more imports... } */
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.cache.annotation.Cacheable;
@Aspect
public class GetPropertyInterceptor
{
@Around( "call(* *.getProperty(..))" )
@Cacheable( cacheManager = "nonExistingCacheManager", value = "thisShouldBlowUp", key = "#nosuchkey" )
public Object intercepting( ProceedingJoinPoint pjp ) throws Throwable
{
Object o;
/* { modify o } */
return o;
}
}
Учитывая, что мой Aspect уже работает, как я могу заставить @Cacheable работать поверх него?