У меня есть класс с аннотациями методов:аспекта для аннотированных методов
@Service
class MessageService{
@AutoWired
MessageDao dao;
public void setDao(MessageDao dao){
this.dao=dao;
}
@Memoize
public void addNode(Message m){
}
@Memoize
public void updateNode(Message m){
}
@Memoize
public List<Message> getMessagesByEntity(String key){
}
}
мне нужно определить аспект, чтобы сделать некоторые кэширования подстановок служебной деятельности/@Around каждый из указанных выше способов:
@Around("@annotation(com.spring.aspects.Memoize)")
public Object handledMemoize(ProceedingJoinPoint pjp) throws Throwable
{
.....
......
.....
Object obj = pjp.proceed();
if (args != null)
{
cache.put(Arrays.asList(args), obj);
}
return obj;
}
Теперь характер активности кеша будет отличаться для каждого из вышеперечисленных методов.
Поэтому мне нужно, чтобы аспект вел себя по-разному в зависимости от действительного вызванного метода.
Как это достичь?
Я бы поверила, что лучшая практика будет отдельным аспектом для каждого из основных методов, объединив имя метода @Memoize и имя метода.
Любая помощь приветствуется.
Какой смысл использовать «Аспект», если прокси-код не будет одинаковым для каждого метода? Почему бы просто не сделать это частью метода? –
Прокси-код может быть одинаковым для классов/типов методов. Идея заключалась в том, чтобы определить, как идентифицировать тип как часть аннотации, когда есть еще одна аннотация в буксировке. – IUnknown