Spring-AOP简介

Spring-AOP简介

spring面向切面编程

1、切面

事务、日志、安全性框架、权限等都是切面

2、通知

通知就是切面中的方法

1
2
3
4
5
6
7
8
9
10
11
// Transaction类为一个切面
public class Transaction {
// beginTransaction()方法为一个通知
public void beginTransaction(){
System.out.println("begin transaction");
}
// commit()方法为另一个通知
public void commit(){
System.out.println("commit");
}
}

3、切入点

1
2
3
4
5
6
7
8
9
10
11
12
13
if(method.getName().contains("save")
||method.getName().contains("update")
||method.getName().contains("delete")){
//1、开启事务
this.transaction.beginTransaction();
//2、完成目标方法
obj = method.invoke(this.target, args);
//3、事务的提交
this.transaction.commit();
}else{
//2、完成目标方法
obj = method.invoke(this.target, args);
}

在上面的代码中if语句块的内容就是切入点,只有满足了切入点以后,才能让通知和目标方法结合在一起

4、连接点

代理对象调用哪个方法,该方法就称为连接点(在程序执行过程中某一个特定的点)

5、织入:

形成代理对象方法体的过程,一个动作

6、说明:

  • 1、代理对象的方法=通知+目标方法
  • 2、除了目标方法以外的内容都可以看做切面中的通知(比如目标方法有CRUD,除了CRUD之外的都是通知,如开启事务、事务提交及事务回滚等)
  • 3、连接点代表了一个方法,在客户端被调用的一个方法(这个方法目标方法和代理对象中都存在)
  • 4、通知就是切面中的一个方法
  • 5、在开发的过程中,通知和目标方法完全是松耦合的