Могу ли я заниматься аспектно-ориентированным программированием в Scala? - PullRequest
30 голосов
/ 17 февраля 2011

Я не говорю о том, чтобы имитировать функции AOP в Scala (то есть использовать Черты вместо Аспектов), мне интересно, возможно ли сделать настоящий AOP в Scala (то есть советы, аспекты, совместные точки, плетение и т. Д ... )

Ответы [ 2 ]

28 голосов
/ 17 февраля 2011

Mixin - это классический способ представить AOP в Scala (как в « Стеки композиций в стиле AOP Mixin в Scala » от Jonas Bonér).

Но я знаю только " AOP на основе прокси-метода в Scala " (Даниэль Спивак - также здесь, на SO - и Тянь Чжао) как продвинутыйРеализация AOP в Scala ( исходный код здесь ).

В нашей технике используются функции высшего порядка Scala для перехвата вызовов методов с минимальными синтаксическими издержками, накладываемыми на базовую программу.
Эта структура позволяет разработчикам определять pointcuts, определяя типы классов и сигнатуры методов.Структура также обеспечивает доступ к переменным контекста, в то время как аспекты могут вставлять код рекомендации до или после рекомендованного органа.

6 голосов
/ 17 февраля 2011

У нас не было проблем с использованием Spring AOP с нашими классами Scala.Хотя он не вносит никаких изменений в байт-код (только прокси).

...