web-dev-qa-db-ja.com

Scalaでアスペクト指向プログラミングを行うことはできますか?

Scala(つまり、アスペクトの代わりに特性を使用)でAOP機能を模倣することについて話しているのではありません。Scalaで真のAOPを実行できるのではないかと思います。 =(つまり、アドバイス、アスペクト、ジョイントポイント、ウィービングなど...)

30

Mixinは、Scala(JonasBonérの " ScalaのAOPスタイルのMixin構成スタック "のように)でAOPを導入する古典的な方法です。

しかし、私は " ScalaのメソッドプロキシベースのAOP "(Daniel Spiewak -- ここでもSO -とTian Zhao)を=の高度なAOP実装として知っています。 Scala( ソースコードはこちら )。

私たちの手法では、Scalaの高階関数を使用して、基本プログラムに課せられる構文上のオーバーヘッドを最小限に抑えてメソッド呼び出しをインターセプトします。
このフレームワークを使用すると、開発者はクラスタイプとメソッドシグネチャを指定してポイントカットを定義できます。フレームワークはコンテキスト変数へのアクセスも許可しますが、アスペクトはアドバイスされた本文の前後にアドバイスコードを挿入できます。

28
VonC

ScalaクラスでSpringAOPを使用しても問題はありません。ただし、バイトコードの変更は行われません(プロキシのみ)。

6
Clement P