Главная » Spring » Объявление аспектов в XML

0

Знакомые с классической моделью аспектно-ориентированного программирования в Spring знают, что работать с ProxyFactoryBean очень неудобно. В свое время разработчики Spring осознали это и приступили к реализации более удобного способа объявления аспектов в Spring. В результате их усилий в пространстве имен aop появились новые элементы. Перечень элементов настройки меха- низма AOP приводится в табл. 5.2.

Таблица 5.2. Элементы настройки механизма AOP в Spring упрощают объявление аспектов, основанных на POJO

Элемент настройки AOP

Назначение

<aop:advisor>

Определяет объект-советник

<aop:after>

Определяет AOP-совет, выполняемый после вызова метода (независимо от успешности его завершения)

<aop:after-returning>

Определяет AOP-совет, выполняемый после успешного выполнения метода

<aop:after-throwing>

Определяет AOP-совет, выполняемый после возбуждения исключения

<aop:around>

Определяет AOP-совет, выполняемый до и после выполнения метода

<aop:aspect>

Определяет аспект

<aop:aspectj-autoproxy>

Включает поддержку аспектов, управляемых аннота- циями, созданными с применением аннотации @AspectJ

<aop:before>

Определяет AOP-совет, выполняемый до выполнения метода

Таблица 5.2 (окончание)

Элемент настройки AOP

Назначение

<aop:config>

Элемент верхнего уровня настройки механизма AOP

<aop:declare-parents>

Внедряет в объекты прозрачную реализацию дополнительных интерфейсов

<aop:pointcut>

Определяет срез точек сопряжения

В главе 2 демонстрировалось внедрение зависимостей на примере реализации конкурса талантов «Spring Idol». В этом примере было подключено нескольких исполнителей в виде компонентов Spring, чтобы они могли продемонстрировать свои таланты. Это довольно забавный пример. Но для конкурсов, подобных этому, нужны зри- тели, иначе в их проведении нет никакого смысла.

Поэтому, чтобы продемонстрировать возможности Spring AOP, создадим класс Audience для нашего примера конкурса талантов. В листинге 5.1 представлен класс, определяющий функции зрите- лей.

Листинг 5.1. Класс Audience для конкурса талантов

package com.springinaction.springidol;

public class Audience {

public void takeSeats() { // Перед выступлением System.out.println("The audience is taking their seats.");

}

public void turnOffCellPhones() { // Перед выступлением System.out.println("The  audience  is turning  off  their cellphones");

}

public   void   applaud()   {   //  После   выступления System.out.println("CLAP CLAP CLAP CLAP CLAP");

}

public void demandRefund() { // После неудачного выступления System.out.println("Boo!  We  want  our  money  back!");

}

}

Как видите, в классе Audience  нет ничего примечательного. Это обычный Java-класс с горсткой методов. Его можно зарегистриро-

вать в виде компонента в контексте приложения Spring, подобно любому другому классу:

<bean  id="audience"

class="com.springinaction.springidol.Audience"   />

Несмотря на его неприметность, класс Audience обладает всем не- обходимым для создания аспекта. К нему нужно лишь добавить не- много волшебства Spring AOP.

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

По теме:

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