Среда: простое автономное Java-приложение.AspectJ баночка внутри.
У меня два проекта.Первый, скажем, «A» содержит пользовательскую аннотацию области действия метода и аспект, который отвечает за выполнение некоторой задачи при вызове метода.
Аннотация:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AccessibleForRole {
String value() ;
}
аспект:
public aspect AccessibleListener {
pointcut verifyRole():
(
call(@AccessibleForRole * *())
);
before() : verifyRole() { // do something
}
}
Я сделал JAR-файл с этими аннотациями / аспектами.
После этого я создаю класс модели в проекте А. Я аннотирую метод с помощью моей аннотации,запустите программу, и я вижу аспект, перехватывающий событие и работающий над ним.
public class Model {
@AccessibleForRole("admin")
public void addUserToApplication(){
System.out.println("in Model.addUserToApplication.");
}
}
Он работает нормально .... но .... Если я создаю второй проект, проект 'B' использует jar 'А, и я создаю новые классы, с помощью методов, которые я аннотирую (например, модель), кажется, что ничего особенного не происходит.Ничего не перехватывается.
Можно ли в будущем создать что-то, что должно быть перехвачено с помощью AspectJ из проекта A jar, без перекомпиляции?
Заранее спасибо,