public class

AspectJAwareAdvisorAutoProxyCreator

extends AbstractAdvisorAutoProxyCreator
java.lang.Object
   ↳ org.springframework.aop.framework.ProxyConfig
     ↳ org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator
       ↳ org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator
         ↳ org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator
Known Direct Subclasses

Class Overview

AbstractAdvisorAutoProxyCreator subclass that exposes AspectJ's invocation context and understands AspectJ's rules for advice precedence when multiple pieces of advice come from the same aspect.

Summary

[Expand]
Inherited Constants
From interface org.springframework.core.Ordered
[Expand]
Inherited Fields
From class org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator
Public Constructors
AspectJAwareAdvisorAutoProxyCreator()
Protected Methods
void extendAdvisors(List<Advisor> candidateAdvisors)
Adds an ExposeInvocationInterceptor to the beginning of the advice chain.
boolean shouldSkip(Class beanClass, String beanName)
Subclasses should override this method to return true if the given bean should not be considered for auto-proxying by this post-processor.
List<Advisor> sortAdvisors(List<Advisor> advisors)
Sort the rest by AspectJ precedence.
[Expand]
Inherited Methods
From class org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator
From class org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator
From class org.springframework.aop.framework.ProxyConfig
From class java.lang.Object
From interface org.springframework.beans.factory.BeanClassLoaderAware
From interface org.springframework.beans.factory.BeanFactoryAware
From interface org.springframework.beans.factory.config.BeanPostProcessor
From interface org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor
From interface org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor
From interface org.springframework.core.Ordered

Public Constructors

public AspectJAwareAdvisorAutoProxyCreator ()

Protected Methods

protected void extendAdvisors (List<Advisor> candidateAdvisors)

Adds an ExposeInvocationInterceptor to the beginning of the advice chain. These additional advices are needed when using AspectJ expression pointcuts and when using AspectJ-style advice.

Parameters
candidateAdvisors Advisors that have already been identified as applying to a given bean

protected boolean shouldSkip (Class beanClass, String beanName)

Subclasses should override this method to return true if the given bean should not be considered for auto-proxying by this post-processor.

Sometimes we need to be able to avoid this happening if it will lead to a circular reference. This implementation returns false.

Parameters
beanClass the class of the bean
beanName the name of the bean
Returns
  • whether to skip the given bean

protected List<Advisor> sortAdvisors (List<Advisor> advisors)

Sort the rest by AspectJ precedence. If two pieces of advice have come from the same aspect they will have the same order. Advice from the same aspect is then further ordered according to the following rules:

  • if either of the pair is after advice, then the advice declared last gets highest precedence (runs last)
  • otherwise the advice declared first gets highest precedence (runs first)

Important: Advisors are sorted in precedence order, from highest precedence to lowest. "On the way in" to a join point, the highest precedence advisor should run first. "On the way out" of a join point, the highest precedence advisor should run last.

Parameters
advisors the source List of Advisors
Returns
  • the sorted List of Advisors