最初に、AspectJを使用していますが、気に入っていますが、他に何ができるのでしょうか。
AspectJはロギングに使用できます。場合によっては、トランザクション制御に使用されます。主に注釈と組み合わせて実装されます。 AspectJは、Spring Rooが行うように、(コード生成された)メソッドでクラスを拡張するためにも使用できます。
しかし、AspectJとAOPは一般に、ロギング、トランザクション制御、シミュレーションの部分クラス以外にも使用できると思います。
AspectJとAOPの他の有用なユースケースは何ですか?
編集する
この回答を書いてから長い年月が経ちましたが、回答をより完全なものにするために、以下を追加することにしました。
false
を返すがtrue
を返す必要があるブールメソッド。 AspectJを使用してこれを修正できます。Wikipediaエントリ は、さらにいくつかの例を示します(ただし、それほど多くはありません)。通常、アスペクト指向プログラミングは、クラスの主要な関心事の一部ではなく、さまざまなクラスに共通する単純な動作を実装するためにのみ使用する必要があります。アスペクトにあまりにも多くのロジックを入れ始めるとすぐに、コードは本当に読めなくなります。
提案する側面(ログ、トランザクションなど)が最も一般的に使用されます。セキュリティも追加します。
AspectJを使用して、いくつかの(設計)ルールを適用できます。
Newを使用して新しいインスタンスを作成するクラスにモックを挿入します。次のコードがあるとします。
_public void sendInvitationEmail(String address) {
InvitationEmail email = new InvitationEmail();
email.sendTo(address).send();
}
_
email
をモックに置き換える必要があります。次に、アスペクト(@Pointcut("call(InvitationEmail.new(..))")
)を使用してモックを「挿入」できます。 -@See Blog JMock and AspectJ by Daniel Roop、およびSpring Rooの@MockStaticEntityMethods( Spring Aspectを使用した静的メソッドのモック )