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

Что является лучшим инструментом для Java для аспектно-ориентированное программирование?

требования к инструменту, конечно, поддержка IDE, выразительность и правильная документация.

5 ответов


JBossAOP и AspectJ являются двумя часто используемыми зрелыми фреймворками для AOP. Другим популярным выбором является Spring AOP, но ему не хватает некоторых особенностей двух других.

оба JBossAOP и AspectJ имеют аналогичные функции, одна большая разница в том, что AspectJ полагается на расширения языка Java, в то время как JBoss AOP этого не делает.

Если ваши требования к AOP довольно просты, также стоит рассмотреть библиотеку манипуляций с байтовым кодом, такую как ASM. Я использовал ASM для реализации простого "around-advice" (т. е. кода, который вводится до и после вызова метода), и он оказался более легкой альтернативой JBossAOP. ASM чисто спроектирован и хорошо документирован.


Я бы сказал AspectJ. Часть IDE, насколько я знаю, отсутствует, но документация и выразительность являются одними из лучших фреймворков AOP, которые я видел.


Если вы уже используете Spring, управляемые obejects уже имеют поддержка AOP. Хотя он не так гибок, как AspectJ, он не требует предварительного этапа компиляции, который делает AspectJ.


относительно поддержки весны AOP. По умолчанию это актуально только для управляемых объектов Spring и AFAIK на основе AspectJ.

Я еще не проверял его сам, но похоже, что он позволяет использовать AOP и для других объектов (например, время загрузки под Tomcat). Подробности здесь.


АОП с весенним паром эта ссылка http://rajkrrsingh.blogspot.com/2012/10/spring-aop-tutorial.html