AspectJ, аспектно-ориентированное программирование на Java

Аспект J является расширением Java для реализации аспектно-ориентированного программирования (AOP), техники, которая модуляризует кросс-функциональные проблемы, другими словами, позволяет применять один и тот же процесс к различным программам.

Aspect J существует с 2001 года, а AOP разрабатывается исследовательским центром Пало-Альто с 1994 года. Здесь агрегат - не класс, а концерн, который делят между собой несколько классов. Проблемами могут быть свойства, области интересов в системе, а AOP описывает их отношения и собирает их в программу. Аспекты инкапсулируют общее поведение. несколько классов.
Аспекты системы могут быть вставлены, изменены или удалены во время компиляции.

Различие между аспектом и классом можно выразить на примере. Предположим, что управление регистрацией пользователей - это класс, тогда он состоит из методов, используемых каждой программой, которая использует пакет. Но если регистрация пользователей - это «забота», то она смешивается с другими пакетами в каждой программе, которая ее использует. Как и класс, его можно заменить другой заботой. Концерн предусматривает взаимодействие с другими процессами, в то время как класс знает только свои атрибуты.

Использование AspectJ позволяет значительно уменьшить размер программы без какой-либо потери производительности и соответственно упрощает проектирование. Это улучшает модульность и возможность многократного использования кода. Это особенно полезно для отладки больших проектов.

Добавление AspectJ в Java

Добавление аспектов в Java-код осуществляется по следующим принципам:

  1. Дополнение к Java: может быть добавлено в существующую программу (и заменить кучу кода или добавить отладочные элементы управления или обработки).
  2. Точки соединения представляют определенные точки в выполнении программы, такие как вызов метода, создание исключения и т. д.
  3. Точка соединения может содержать другие точки соединения.
  4. Точечный вырез - это конструкция, включающая набор точек соединения в соответствии с заданным критерием. Например, набор методов в пакете во время выполнения.
  5. Совет - это код, который выполняется до, после или во время точки соединения.
  6. Компилятор ajc генерирует исходный код AspectJ, либо исходный код .java, либо файл байт-кода .class.
  7. Код AspectJ может быть повторно использован в других программах.

Пример кода

Этот аспект касается выполнения каждого метода в программе Eclipse. Один совет выполняет какой-то код перед звонком, а другой совет выполняет какой-то код после звонка.

public aspect xxxx
{ 
 pointcut anyMethod(): 
execution(*org.eclipse..*(..)); 
  before(): anyMethod() 
{
     ... some code... 
 } 
  after(): anyMethod() 
{
     ... some code... 
 }
} 

Инструменты и документация