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

Различие между аспектом и классом можно выразить на примере. Предположим, что управление регистрацией пользователей - это класс, тогда он состоит из методов, используемых каждой программой, которая использует пакет. Но если регистрация пользователей - это «забота», то она смешивается с другими пакетами в каждой программе, которая ее использует. Как и класс, его можно заменить другой заботой. Концерн предусматривает взаимодействие с другими процессами, в то время как класс знает только свои атрибуты.
Использование AspectJ позволяет значительно уменьшить размер программы без какой-либо потери производительности и соответственно упрощает проектирование. Это улучшает модульность и возможность многократного использования кода. Это особенно полезно для отладки больших проектов.
Добавление AspectJ в Java
Добавление аспектов в Java-код осуществляется по следующим принципам:
- Дополнение к Java: может быть добавлено в существующую программу (и заменить кучу кода или добавить отладочные элементы управления или обработки).
- Точки соединения представляют определенные точки в выполнении программы, такие как вызов метода, создание исключения и т. д.
- Точка соединения может содержать другие точки соединения.
- Точечный вырез - это конструкция, включающая набор точек соединения в соответствии с заданным критерием. Например, набор методов в пакете во время выполнения.
- Совет - это код, который выполняется до, после или во время точки соединения.
- Компилятор ajc генерирует исходный код AspectJ, либо исходный код .java, либо файл байт-кода .class.
- Код AspectJ может быть повторно использован в других программах.
Пример кода
Этот аспект касается выполнения каждого метода в программе Eclipse. Один совет выполняет какой-то код перед звонком, а другой совет выполняет какой-то код после звонка.
public aspect xxxx { pointcut anyMethod(): execution(*org.eclipse..*(..)); before(): anyMethod() { ... some code... } after(): anyMethod() { ... some code... } }
Инструменты и документация
- AspectJ Eclipse.
Проект AspectJ является частью Eclipse. - DeveloperWorks.
Читайте подробную статью Н. Лесецкого. (англ.).