Не отрабатывает Advice при использовании AspectJ

Рейтинг: 1Ответов: 0Опубликовано: 06.05.2015

Пытаюсь разобраться с АОП на Java, а конкретно в использовании AspectJ. Создал простой класс аспект SimpleAspect с советом привязанным на выполнение метода simpleMethod() в классе SimpleClass.

При выполнении программы целевой метод выполняется, код из совета не выполняется. Использую последнюю версию рантайма aspectjrt-1.8.5. В чем может быть проблема или как её можно диагностировать?

SimpleAspect.java:

package com.sergey;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;

@Aspect
public class SimpleAspect
{


    @Pointcut("execution(* com.sergey.SimpleClass.simpleMethod(..))")
    public void simpleMethodPoint(){}

    @Around("simpleMethodPoint()")
    public void advice(ProceedingJoinPoint joinPoint) {

        System.out.println("Before: " + joinPoint.getSignature().getName());
        try
        {
            joinPoint.proceed();
        }
        catch (Throwable e)
        {

            e.printStackTrace();
        }
        System.out.println("After: " + joinPoint.getSignature().getName());
    }
}

SimpleClass.java:

package com.sergey;

public class SimpleClass
{
    public static void simpleMethod()
    {
         System.out.println("Inside simpleMethod");
    }

    public static void main(String[] args)
    {
        SimpleClass.simpleMethod();
    }
}

Спасибо за подсказку в комментариях:

Решение:

Для вплетения кода советов из аспектов в код необходимо использовать совместно или вместо используемого компилятора использовать компилятор ajc, который можно найти в папке с установленным AspectJ (если он установлен) или в aspectjtools.jar.

Ответы

Ответов пока нет.