私は本当に AOP に頭を悩ませ始めており、分野横断的な懸念を抽象化し、コア ビジネス コードからそれを削除するというアイデアが本当に気に入っています。これまでのところ、AOP Alliance (Guice と Spring AOP の主力製品であることがわかります) と AspectJ について調べてきました。
残念ながら、単純なメソッド インターセプトよりも高度なものについて話している場合、適切に動作する Java AOP コードの例を見つけるのは困難です。永続性、トランザクション処理、メッセージングなどの主要な Java EE 概念を AOP で実装する方法を何度も何度も読み続けていますが、私の人生では、この例を見つけることができません!
最終的に言えば、AOP は結局のところ、メソッド インターセプトに要約されます (ここで何か重大なことが抜けていない限り)。その場合、メソッド インターセプターの一般的な形式を考えると、次のようになります。
// Using AOP Alliance for this example
public class MyInterceptor implements MethodInterceptor {
public Object invoke(MethodInvocation inv) {
// Run this code before executing inv.
preInvocation();
Object result = inv.proceed();
// Run this code after executing inv.
postInvocation();
}
// ...
}
出発点として、メソッドインターセプトを介してこれらの Java EE 概念のそれぞれを AOP に委譲する方法の具体的なコード例を提供してください。
- 永続性/ORM
- 取引処理
- メッセージング
すべての点を結びつけ、「木」を通して「森」を見るのが難しいだけだと思います。前もって感謝します!