天天看点

Spring系列之AOP分析之获取Advice的过程(四)

我们在前面的文章中分析了从切面类中获取Advisor的过程,我们最后创建的Advisor实例为:InstantiationModelAwarePointcutAdvisorImpl,它是一个Advisor和PointcutAdvisor的实现类,所以我们可以从这个类中获取Advice和Pointcut。从之前的分析中我们也看到了Pointcut的赋值,在这一篇文章中我们将会具体分析Advice的创建过程。

我们在上一篇文章的末尾说到了这一段代码可以实例化Advice。我们来看看这个方法的代码:

ReflectiveAspectJAdvisorFactory中getAdvice方法的代码如下

上面即是获取Advice的过程。我们简单的看一下calculateArgumentBindings这个方法做了什么事:

calculateArgumentBindings

通过前面的分析我们可以了解到一个切面中的通知方法会生成一个Advisor实例(如InstantiationModelAwarePointcutAdvisorImpl,其实这个也是我们在SpringAOP中最常用的一个Advisor实现类),在生成这个Advisor实例的过程中会创建一个相应的Advice实例! 一个通知方法---->一个Advisor(包含Pointcut)------>一个Advice!

PS:这里只是一个生成Advice的地方,在其他的地方也会生成Advice,我们在以后再分析。