Итак, я начал изучать использование AspectJ для обработки событий обработки при изменении состояния объекта в моем домене.Новичок, работающий с AspectJ: не может получить аспект под названием
Фактически, я хотел бы написать совет, который обертывает все методы setter в моем домене. Когда вызывается совет, он проверяет начальное значение устанавливаемого поля, запускает сеттер, а затем проверяет значение после выполнения сеттера. Если значение изменяется, оно вызывает событие для прослушивателя событий, информируя об этом изменении.
Я использовал учебник, найденный здесь: 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>
Аспект класс, который я создал, выглядит так:
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()) вызывается. Я считаю, что это должно вызвать мои советы, но я никогда не вникаю в метод консультаций.
Любые указания на то, что я делаю неправильно здесь?
Благодаря
Это все. У меня создалось впечатление, что аннотации @Around достаточно, чтобы заставить ткача определить, какие классы должны быть инструментами. По-видимому, было немного больше настроек. Благодаря... – Steve