- AOP的简介
- AOP的示例
- AOP的术语
- AOP的实现者
- 静态AOP:Aspect形式,通过特定的编译器,将实现后的Aspect编译并织入到系统的静态类中。
- 动态AOP:AOP的织入过程在系统运行开始之后进行,而不是预先编译到系统中。
public class ForumService{
public void removeTopic(int topicid){
pmomitor.start();
transManager.beginTransaction();
topicDao.removeTopic(topicid);
transManager.commit();
pmomitor.end();
}
}
上面的代码是一个论坛的性能监视代码段,他的横切逻辑示意图为:- 连接点:程序执行的某个特定位置,比如类初始化前,初始化后,方法调用前,方法调用后等等
- 切点:通过切点来定位特定的连接点
- 增强:织入到目标的类连接点上的一段程序代码
- 目标对象:增强逻辑的织入目标类
- 引介:引介是一种特殊的增强,他为类添加一些属性和方法
- 织入:将增强添加到目标类的具体连接点上的过程
- 代理:一个类被AOP织入增强后,会产生一个结果类,该类是融合了原类和增强逻辑的代理类
- 切面:由切点和增强组成,既包括了横切逻辑的定义,也包括了连接点的定义
- 前置通知:在目标方法调用之前执行。不能阻止后续执行,除非抛异常。
- 后置通知:在目标方法调用之后执行。目标方法正常结束才执行。
- 异常通知:在目标方法调用发生异常之后执行。但是如果目标方法中捕获了异常,那么异常通知不会执行。
- 最终通知:在目标方法调用之后执行。目标方法正常或异常都执行。
- 环绕通知:在目标方法调用之前和之后执行。
说明:
- 后置通知可以接受目标方法的返回值。
- 最终通知中不能访问返回值,因为方法可能会出异常。
- 异常通知可以接收异常对象,并且可以指定在出现特定异常时才执行。
try {
// 调用前置通知
// 环绕前置处理
// 调用目标对象方法
// 环绕后置处理
// 调用后置通知
} catch (Exception e) {
// 调用异常通知
} finally {
// 调用最终通知
}
2001



被折叠的 条评论
为什么被折叠?



