org.springframework.aop.aspectj.annotation
Class AnnotationAwareAspectJAutoProxyCreator

java.lang.Object
  extended by org.springframework.aop.framework.ProxyConfig
      extended by org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator
          extended by org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator
              extended by org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator
                  extended by org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator
All Implemented Interfaces:
Serializable, AopInfrastructureBean, BeanClassLoaderAware, BeanFactoryAware, BeanPostProcessor, InstantiationAwareBeanPostProcessor, SmartInstantiationAwareBeanPostProcessor, Ordered

public class AnnotationAwareAspectJAutoProxyCreator
extends AspectJAwareAdvisorAutoProxyCreator

AspectJAwareAdvisorAutoProxyCreator subclass that processes all AspectJ annotation aspects in the current application context, as well as Spring Advisors.

Any AspectJ annotated classes will automatically be recognized, and their advice applied if Spring AOP's proxy-based model is capable of applying it. This covers method execution joinpoints.

If the <aop:include> element is used, only @AspectJ beans with names matched by an include pattern will be considered as defining aspects to use for Spring auto-proxying.

Processing of Spring Advisors follows the rules established in AbstractAdvisorAutoProxyCreator.

Since:
2.0
Author:
Rod Johnson, Juergen Hoeller
See Also:
AspectJAdvisorFactory, Serialized Form

Field Summary
 
Fields inherited from class org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator
DO_NOT_PROXY, logger, PROXY_WITHOUT_ADDITIONAL_INTERCEPTORS
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
AnnotationAwareAspectJAutoProxyCreator()
           
 
Method Summary
protected  List<Advisor> findCandidateAdvisors()
          Find all candidate Advisors to use in auto-proxying.
protected  void initBeanFactory(ConfigurableListableBeanFactory beanFactory)
           
protected  boolean isEligibleAspectBean(String beanName)
          Check whether the given aspect bean is eligible for auto-proxying.
protected  boolean isInfrastructureClass(Class beanClass)
          Return whether the given bean class represents an infrastructure class that should never be proxied.
 void setAspectJAdvisorFactory(AspectJAdvisorFactory aspectJAdvisorFactory)
           
 void setIncludePatterns(List<String> patterns)
          Set a list of regex patterns, matching eligible @AspectJ bean names.
 
Methods inherited from class org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator
extendAdvisors, shouldSkip, sortAdvisors
 
Methods inherited from class org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator
advisorsPreFiltered, findAdvisorsThatCanApply, findEligibleAdvisors, getAdvicesAndAdvisorsForBean, isEligibleAdvisorBean, setBeanFactory
 
Methods inherited from class org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator
buildAdvisors, createProxy, customizeProxyFactory, determineCandidateConstructors, getBeanFactory, getCacheKey, getCustomTargetSource, getEarlyBeanReference, getOrder, isFrozen, postProcessAfterInitialization, postProcessAfterInstantiation, postProcessBeforeInitialization, postProcessBeforeInstantiation, postProcessPropertyValues, predictBeanType, setAdvisorAdapterRegistry, setApplyCommonInterceptorsFirst, setBeanClassLoader, setCustomTargetSourceCreators, setFrozen, setInterceptorNames, setOrder, setProxyClassLoader, shouldProxyTargetClass, wrapIfNecessary
 
Methods inherited from class org.springframework.aop.framework.ProxyConfig
copyFrom, isExposeProxy, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setOpaque, setOptimize, setProxyTargetClass, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AnnotationAwareAspectJAutoProxyCreator

public AnnotationAwareAspectJAutoProxyCreator()
Method Detail

setIncludePatterns

public void setIncludePatterns(List<String> patterns)
Set a list of regex patterns, matching eligible @AspectJ bean names.

Default is to consider all @AspectJ beans as eligible.


setAspectJAdvisorFactory

public void setAspectJAdvisorFactory(AspectJAdvisorFactory aspectJAdvisorFactory)

initBeanFactory

protected void initBeanFactory(ConfigurableListableBeanFactory beanFactory)
Overrides:
initBeanFactory in class AbstractAdvisorAutoProxyCreator

findCandidateAdvisors

protected List<Advisor> findCandidateAdvisors()
Description copied from class: AbstractAdvisorAutoProxyCreator
Find all candidate Advisors to use in auto-proxying.

Overrides:
findCandidateAdvisors in class AbstractAdvisorAutoProxyCreator
Returns:
the List of candidate Advisors

isInfrastructureClass

protected boolean isInfrastructureClass(Class beanClass)
Description copied from class: AbstractAutoProxyCreator
Return whether the given bean class represents an infrastructure class that should never be proxied.

Default implementation considers Advisors, Advices and AbstractAutoProxyCreators as infrastructure classes.

Overrides:
isInfrastructureClass in class AbstractAutoProxyCreator
Parameters:
beanClass - the class of the bean
Returns:
whether the bean represents an infrastructure class
See Also:
Advisor, MethodInterceptor, AbstractAutoProxyCreator.shouldSkip(java.lang.Class, java.lang.String)

isEligibleAspectBean

protected boolean isEligibleAspectBean(String beanName)
Check whether the given aspect bean is eligible for auto-proxying.

If no <aop:include> elements were used then "includePatterns" will be null and all beans are included. If "includePatterns" is non-null, then one of the patterns must match.