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.
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.
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.
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.