Итак, я начал изучать использование AspectJ для обработки событий при изменении состояния объекта в моем домене.
По сути, я хотел бы написать совет, который охватывает все методы сеттера в моем домене. Когда вызывается совет, он проверит начальное значение устанавливаемого поля, запустит установщик, а затем проверит значение после его выполнения. Если значение изменяется, оно отправляет событие в прослушиватель событий, информируя об изменении.
Я использовал учебник, найденный здесь: http://www.andrewewhite.net/wordpress/2010/03/17/aspectj-annotation-tutorial/,, но я не могу получить какие-либо рекомендации для звонков. Обратите внимание, что я использую только метод LTW для создания своих советов, я не пишу советы с использованием языка AspectJ и его предварительной компиляции.
Мой aop.xml (в META-INF для моего набора тестов) выглядит так:
<aspectj>
<aspects>
<aspect name="domain.aop.TestAspect"/>
</aspects>
</aspectj>
Созданный мной класс Aspect выглядит следующим образом:
package domain.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class TestAspect
{
@Around("call(* domain.*.set*(..))")
public void aroundSetMethods (JoinPoint jp)
{
System.out.println ("aroundSetMethod called");
}
}
Когда я запускаю свой тестовый пример, я вижу (устанавливая точку останова), что вызывается метод (domain.Error.setTask ()). Я уверен, что это должно вызвать мой совет, но я никогда не использую метод совета.
Есть какие-нибудь указатели на то, что я здесь делаю неправильно?
Спасибо