Суббота, 20.12.2025
Java Developer


По всем возникшим вопросам пишите через обратную связь!
Меню сайта
Форма входа
Главная » Статьи » Мои статьи

Spring AOP часть 1

Добавление Аспектно-ориентированного программирования в приложение

На изображении показано, что аспект логирования применен к главному приложению при помощи pointcuts. Pointcut в АОП описывает, где и как код аспекта должен быть вставлен в целовой код. Изображение показывает как Spring AOP смотрит pointcuts и применяет аспекты в целевом коде в нескольких joint points.

Spring Аспектно-ориентированное программирование

Добавляем Logging Aspect (аспект логирования)

В этой части, вы сможете попробовать Spring AOP, применив аспект логирования к уже существующему приложению — Calculation.

Код для аспекта:

 
package com.wrox.begspring.aspects; 
import org.aspectj.lang.JoinPoint; 
import org.aspectj.lang.annotation.Aspect; 
import org.aspectj.lang.annotation.Before; 
@Aspect 
public class LoggingAspect {  
 @Before("execution(* com.wrox.begspring.Operation.*(..))") 
 public void logMethodExecution(JoinPoint jp) { 
 System.out.println("AOP logging -> " 
 + jp.toShortString() ); 
 }  
} 
 

Аспект логирования, который будет применяться выделен жирным цветом. Запомните, что никто не знает об этом коде аспекта, который ссылается на CalculateSpring код — цель к которой он применяется. В действительности, этот аспект может быть отредактирован независимо от CalculateSpring кода.

Этот код выводит сообщение, похожее на следующее, всякий раз, когда вызывается метод Operation в интерфейсе. Вызов происходит из CalculateSpring кода. Результат вызова:

AOP logging -> execution(getOpsName)
 

Давайте попробуем

  1. Заходим в директорию springaop проекта
  2. Компилируем проект, используя Maven 2
    mvn compile
  3. Запускаем код, используя Maven 2
    mvn exec:java -Dexec.mainClass=com.wrox.begspring.CalculateSpringAOP–Dexec.args="3000 3"
  4. Смотрим на результат выполнения:
    AOP logging -> execution(getOpsName)
    AOP logging -> execution(operate)
    The result of 3000 times 3 is 9000!

Обратите внимание, что запуск двух методов getOpsName() и operate() из интерфейса, вызывает логирование. Еще, реализация интерфейсов - таких как OpAdd и OpMultiply - не логируются вовсе.

Категория: Мои статьи | Добавил: magadan (25.12.2010)
Просмотров: 1440 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright Dmitriy Savkin © 2025
Конструктор сайтовuCoz