Spring AOP
核心概念
1.Aspect(切面):
切面是横切关注点的模块化。它包含一组通知(Advice)和切点(Pointcut)。
2.Join Point(连接点):
连接点是程序执行过程中的一个点,比如方法调用或异常抛出。
在 Spring AOP 中,连接点总是代表方法的执行。
3.Advice(通知):
通知是切面在特定连接点执行的动作。Spring AOP 提供了以下几种通知类型:
Before Advice:在方法执行之前执行。
After Returning Advice:在方法成功执行后执行。
After Throwing Advice:在方法抛出异常后执行。
After (Finally) Advice:在方法执行结束后执行,无论成功与否。
Around Advice:在方法执行前后都执行,可以控制方法的执行。
4.Pointcut(切点):
切点定义了通知应该应用在哪些连接点上。它通过表达式来匹配连接点。
例如,execution(* com.example.service..(..)) 表示匹配 com.example.service 包中所有类的所有方法。
5.Target Object(目标对象):
目标对象是被一个或多个切面通知的对象。它是业务逻辑的实际执行者。
6.Weaving(织入):
织入是将切面应用到目标对象以创建代理对象的过程。Spring AOP 在运行时通过动态代理实现织入。
Spring AOP 的实现方式
Spring AOP 主要通过两种方式实现:
JDK 动态代理:
适用于目标对象实现了接口的情况。
Spring 会创建一个实现了相同接口的代理对象。
CGLIB 代理:
适用于目标对象没有实现接口的情况。
Spring 会通过生成目标对象的子类来创建代理对象。