org.springframework.aop.aspectj.autoproxy

Class AspectJAwareAdvisorAutoProxyCreator

    • Constructor Detail

      • AspectJAwareAdvisorAutoProxyCreator

        public AspectJAwareAdvisorAutoProxyCreator()
    • Method Detail

      • sortAdvisors

        protected java.util.List<Advisor> sortAdvisors(java.util.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.

        Overrides:
        sortAdvisors in class AbstractAdvisorAutoProxyCreator
        Parameters:
        advisors - the source List of Advisors
        Returns:
        the sorted List of Advisors
        See Also:
        Ordered, Order, AnnotationAwareOrderComparator
      • extendAdvisors

        protected void extendAdvisors(java.util.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.
        Overrides:
        extendAdvisors in class AbstractAdvisorAutoProxyCreator
        Parameters:
        candidateAdvisors - the Advisors that have already been identified as applying to a given bean
      • shouldSkip

        protected boolean shouldSkip(java.lang.Class<?> beanClass,
                                     java.lang.String beanName)
        Description copied from class: AbstractAutoProxyCreator
        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, e.g. if it will lead to a circular reference or if the existing target instance needs to be preserved. This implementation returns false unless the bean name indicates an "original instance" according to AutowireCapableBeanFactory conventions.

        Overrides:
        shouldSkip in class AbstractAutoProxyCreator
        Parameters:
        beanClass - the class of the bean
        beanName - the name of the bean
        Returns:
        whether to skip the given bean
        See Also:
        AutowireCapableBeanFactory.ORIGINAL_INSTANCE_SUFFIX