我真的开始关注 AOP,并且非常喜欢抽象出横切关注点并将其从我的核心业务代码中删除的想法。到目前为止,我一直在阅读 AOP Alliance(我看到它是 Guice 和 Spring AOP 的主力)和 AspectJ。
不幸的是,当我们谈论比简单的方法拦截更高级的东西时,很难找到好的、有效的 Java AOP 代码示例。我一遍又一遍地阅读如何使用 AOP 实现主要的 Java EE 概念,例如持久性、事务处理和消息传递,但在我的一生中,我找不到任何这样的例子!
归根结底,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
- 事务处理
- 消息传递
我想我只是很难连接所有的点并通过“树木”看到“森林”。提前致谢!