目录
AOP的概念
AOP全称(Aspect Oriented Programming)面向切面编程,是对OOP(面向对象)的升华,是横向对不同事物的抽取,可以对不同对象,不同对象的属性,不同对象的方法进行抽取。
AOP思想的实现方案
动态代理技术:在运行期间,对目标对象的方法进行增强,代理对象同名方法内部可以执行原有逻辑的同时嵌入执行其他增强逻辑或者其他对象的方法
对目标对象产生代理对象proxy ,代理对象内部方法和类型和目标对象相同
//自定义增强类
public class MyAdvice {
public void beforeAdvice(){
System.out.printin("beforeAdvice...");
}
public void afterAdvice(){
System.out.printin("afterAdvice...");
}
}
目标对象 :Target 被增强的方法所在的对象
代理对象 :Proxy 对目标对象进行增强后的对象,客户端实际调用的对象
连接点 :Joinpoint 目标对象中可以被增强的方法
切入点: Pointcut 目标对象中实际被增强的方法
通知\增强: Advice 增强部分的代码逻辑
切面 :Aspect 增强和切入点的组合
织入 :Weaving 将通知和切入点组合动态组合的过程
基于xml配置的AOP
xml方式配置AOP的步骤:
1、导入AOP相关坐标;
2、准备目标类、准备增强类,并配置给Spring管理;
3、配置切点表达式(哪些方法被增强);
4、配置织入(切点被哪些通知方法增强,是前置增强还是后置增强)。
<dependency>
<groupId>org.aspecti</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.6</version>
</dependency>
//增强类,内部提供增强方法
public class MyAdvice {
public void beforeAdvice(){
System.out.println("前置的增强....");
}
public void afterAdvice(){
System.out.println("后置的增强....");
}
}
配置文件
xmlns:aop="http://www.springframework.org/schema/aop"
http://www.springframework.org/