public abstract class AbstractAdvisingBeanPostProcessor extends ProxyProcessorSupport implements org.springframework.beans.factory.config.BeanPostProcessor
BeanPostProcessor
implementations that apply a
Spring AOP Advisor
to specific beans.Modifier and Type | Field and Description |
---|---|
protected Advisor |
advisor |
protected boolean |
beforeExistingAdvisors |
Constructor and Description |
---|
AbstractAdvisingBeanPostProcessor() |
Modifier and Type | Method and Description |
---|---|
protected boolean |
isEligible(Class<?> targetClass)
Check whether the given class is eligible for advising with this
post-processor's
Advisor . |
protected boolean |
isEligible(Object bean,
String beanName)
Check whether the given bean is eligible for advising with this
post-processor's
Advisor . |
Object |
postProcessAfterInitialization(Object bean,
String beanName) |
Object |
postProcessBeforeInitialization(Object bean,
String beanName) |
void |
setBeforeExistingAdvisors(boolean beforeExistingAdvisors)
Set whether this post-processor's advisor is supposed to apply before
existing advisors when encountering a pre-advised object.
|
evaluateProxyInterfaces, getOrder, getProxyClassLoader, isConfigurationCallbackInterface, isInternalLanguageInterface, setBeanClassLoader, setOrder, setProxyClassLoader
copyFrom, isExposeProxy, isFrozen, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setFrozen, setOpaque, setOptimize, setProxyTargetClass, toString
protected Advisor advisor
protected boolean beforeExistingAdvisors
public void setBeforeExistingAdvisors(boolean beforeExistingAdvisors)
Default is "false", applying the advisor after existing advisors, i.e. as close as possible to the target method. Switch this to "true" in order for this post-processor's advisor to wrap existing advisors as well.
Note: Check the concrete post-processor's javadoc whether it possibly changes this flag by default, depending on the nature of its advisor.
public Object postProcessBeforeInitialization(Object bean, String beanName)
postProcessBeforeInitialization
in interface org.springframework.beans.factory.config.BeanPostProcessor
public Object postProcessAfterInitialization(Object bean, String beanName)
postProcessAfterInitialization
in interface org.springframework.beans.factory.config.BeanPostProcessor
protected boolean isEligible(Object bean, String beanName)
Advisor
.
Delegates to isEligible(Class)
for target class checking.
Can be overridden e.g. to specifically exclude certain beans by name.
Note: Only called for regular bean instances but not for existing
proxy instances which implement Advised
and allow for adding
the local Advisor
to the existing proxy's Advisor
chain.
For the latter, isEligible(Class)
is being called directly,
with the actual target class behind the existing proxy (as determined
by AopUtils.getTargetClass(Object)
).
bean
- the bean instancebeanName
- the name of the beanisEligible(Class)
protected boolean isEligible(Class<?> targetClass)
Advisor
.
Implements caching of canApply
results per bean target class.
targetClass
- the class to check againstAopUtils.canApply(Advisor, Class)