AspectJ программный Pointcut и Around совет - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть следующая часть кода в аннотированном классе @Aspect:

@Pointcut("@within(org.springframework.transaction.annotation.Transactional) || @within(org.springframework.stereotype.Controller) || @within(org.granite.messaging.service.annotations.RemoteDestination)")
public void serviceMethod() {
}

@Around("serviceMethod()")
public Object aroundServiceInvocation(ProceedingJoinPoint joinPoint) throws Throwable {
    // my code goes here
}

Мне нужно создать среду, в которой я мог бы добавить программно различные аннотации (например, Transactional и Controller были добавлены выше в Pointcut) и гарантировать, что все они обрабатываются одним и тем же методом извещения (в моем случае, методом "aroundServiceInvocation").

Эта структура будет использоваться различными проектами, поэтому я надеялся, что смогу сделать что-то вроде метода (который будет вызываться подпроектом), который получает такой класс аннотаций и в основном добавляет еще один «|| inside (newAnnotationClass)» на значение @ Pointcut (которое по умолчанию будет иметь аннотации @within выше).

Спасибо за ваши ответы!

...