AOP概述

AOP又称为面向切面编程。Aspect-Oriented Programming。其中Aspect是一中模块化机制,用来描述分散在对象、类或函数中的横切关注点。从关注点中分离出横切关注点是面向切面编程的程序设计核心概念。

AOP的主要概念有:

1.基础:被增强的对象,或目标对象。

2.切面:包含对于基础的增强应用

3.配置:将切面和基础结合在一起,从而完成切面对基础的编织。

Spring的AOP主要使用Java本身的语言特性,如Proxy代理类、拦截器等技术。

  1. Advice通知

Advice通知定义在连接点做什么,为切面增强提供织入接口。在Spring中,主要描述Spring AOP围绕方法调用而注入的切面行为。

  • BeforeAdvice接口
MethodBeforeAdvice接口继承了BeforeAdvice接口,提供了一个before方法
void before(Method method,Object[] args,Object target) throws Throwable;
 ```
该方法是现在Advice中被配置到目标方法后,会在调用目标方法前被回调。其中Method对象时目标方法的反射对象,Object[]对象数组包含目标方法的输入参数,target对象表示被增强的对象。

- AfterAdvice通知

AfterReturningAdvice类继承了AfterAdvice接口,提供了一个afterReturning方法
void afterReturning(Object returnValue, Method method, Object[] args, Object
target) throws Throwable;

表示在目标方法调用结束并成功返回后,该方法会被AOP回调。其中returnValue表示目
标方法的返回结果、反射对象、调用参数和被增强对象。

ThrowsAdvice通知
它在抛出异常时被回调,利用反射机制完成。也是继承了AfterAdvice接口。

2. PointCut切点

切点决定Advice通知应该作用月那个连接点,也即通过PointCut来定义需要增强的方法集合。

PointCut接口为实现切点的父类接口,其有三个方法
ClassFilter getClassFilter();
MethodMatcher getMethodMatcher();
Pointcut TRUE = TruePointcut.INSTANCE;

其中ClassFilter为AOP的拦截器。
PointCut为一个切点。其中TruePointCut.INSTANCE为一个单例模式
MethodMatcher为方法的匹配。其判断是否需要对当前方法调用进行增强,或是否需要对
当前调用方法应用配置好的Advice通知。

3. Advisor通知器
完成对目标方法的切面增强(Advice)和切点设计(PointCut)后,需要一个对象将它们结合起来,就是Advisor通知器。这个结合为IoC容器配置AOP应用提供了便利。

在Advisor接口中,有两个方法
Advice getAdvice();
boolean isPerInstance();

“`
其中getAdvice方法表示返回Advice通知
isPerInstance表示这个Advice通知是否与一个或一系列来自同一Spring bean工厂的特定的实例相关联

  • DefaultPointCutAdvisor类实现了Advisor接口
    它有两个属性advice和pointcut。可以用这两个属性来分别配置Advice和PointCut。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值