Я согласен на Spring AOP.
AOSD (мы больше не говорим об AOP, я точно не знаю, почему) действительно полезен для промежуточного программного обеспечения / сервис-ориентированной архитектуры, где у вас уже есть некоторая модульность.
Я использовал его в этом контексте для услуг телефонии с некоторыми действительно ограниченными биллинговыми услугами.
Я также использовал его для создания своего рода модульного интерпретатора / компилятора, чтобы выполнить некоторый анализ вокруг некоторого кода.
На мой взгляд, одной из проблем являются языки pointcut, которые иногда сложно описать, где именно вы хотите применить свой совет. Другая проблема - это композиция, я не знаю, была ли она решена, но это может быть трудно понять, когда вы заказываете свои советы ....