Я пишу библиотеку/sdk, которая может перехватывать любые методы, аннотированные пользовательской аннотацией @Monitor
. Код работает примерно так
@Monitor
public void methodA(String test)
И аспект, который перехватывает это, имеет выражение pointcut
@After("execution(@com.packageA.Monitor * *(..))")
public void intercept(final JoinPoint joinPoint){
...}
Этот код отлично работает, когда я описываю аспект в том же пакете, что и methodA
. Однако, если я создам отдельную библиотеку и определю аспект, в котором она не сможет перехватить methodA
. Любая помощь?
РЕДАКТИРОВАТЬ
В ответ на комментарий @Bond
@Component
@Target(value = {ElementType.METHOD, ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface Monitor {
}
Версии Spring: spring-context - 4.1.7. Release aspectj - 1.6.5 Суть проблемы в том, что аннотация не будет использоваться в том же проекте. После компиляции он будет использоваться в другом проекте.
РЕДАКТИРОВАТЬ2
2-й проект, то есть тот, из которого этот аспект должен перехватываться, скомпилирован с использованием плагина aspectj maven.