Главная » Spring » Создание советов, выполняемых и до, и после Spring

0

Как и в случае настройки аспектов в XML-файле конфигурации Spring, при использовании аннотаций @AspectJ можно создавать не только советы, выполняемые до или после вызова целевого метода, но и советы, выполняемые и до, и после вызова. Для этого следует использовать аннотацию @Around, как показано в следующем при- мере:

@Around("performance()")

public void watchPerformance(ProceedingJoinPoint joinpoint) { try  {

System.out.println("The audience is taking their seats."); System.out.println("The audience is turning off their cellphones");

long  start  =  System.currentTimeMillis(); joinpoint.proceed();

long     end     =     System.currentTimeMillis(); System.out.println("CLAP CLAP CLAP CLAP CLAP");

System.out.println("The performance took " + (end – start)

+   "   milliseconds.");

} catch (Throwable t) {

System.out.println("Boo!   We   want   our   money   back!");

}

}

Здесь аннотация @Around указывает, что метод watchPerformance() используется как совет, выполняемый и до, и после вызова целе- вого метода, соответствующего срезу множества точек сопряжения performance(). Этот фрагмент может показаться до боли знакомым, что неудивительно, так как это тот же самый метод watchPerformance(), который мы видели выше. Только на этот раз он отмечен аннотацией

@Around.

Как вы помните, методы советов, выполняемых и до, и после вызова целевого метода, должны явно вызывать метод proceed(), чтобы выполнить целевой метод. Но простого применения аннота- ции @Around к методу недостаточно, чтобы обеспечить вызов метода proceed(). Поэтому методы, реализующие советы, выполняемые и до, и после вызова целевого метода, должны принимать в виде аргумен- та объект типа ProceedingJoinPoint и вызывать метод proceed() этого объекта.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии