AOP(面向切面编程)学习笔记
通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
AOP相关术语
Joinpoint(连接点): 被拦截到的方法,即指方法的调用
Pointcut(切入点): 我们对哪些连接点进行拦截的定义,也就是被增强的连接点,切入点一定是连接点,连接点不一定是切入点
Advice(通知/增强): 对切入点进行的增强操作
包括前置通知,后置通知,异常通知,最终通知,环绕通知
Weaving(织入): 是指把增强应用到目标对象来创建新的代理对象的过程。
Aspect(切面): 是切入点和通知的结合
Proxy(代理):将通知应用到目标对象之后,被动态创建的对象
Target Object(目标对象):是指所有被通知的对象,也被称为被增强对象
此接口所有方法都为连接点
//环绕通知
public Object invoke(Object proxy,Method method,Object[] args) throws Throwable{
if("test".equals(method.getName())){
return method.invoke(accountService,args);
}
Object rtValue = null;
try{
//1.开启事务 //前置通知
txManager.beginTransaction();
//2.执行操作
rtValue = method.invoke(accountService,args);
//3.提交事务
txManager.commit(); //后置通知
//4.返回结果
return rtValue;
} catch(Exception e){
//5.回滚操作
txManager.rollback();
throw new RuntimeException(e); //异常通知
}finally{ //最终通知
//6.释放连接
txManager.release();
}
}
}
}
此处的accountService就是目标对象
本学习笔记暂且到这里,其他具体实例可自行去查询。