public class

AdvisedSupport

extends ProxyConfig
implements Advised
java.lang.Object
   ↳ org.springframework.aop.framework.ProxyConfig
     ↳ org.springframework.aop.framework.AdvisedSupport
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

Base class for AOP proxy configuration managers. These are not themselves AOP proxies, but subclasses of this class are normally factories from which AOP proxy instances are obtained directly.

This class frees subclasses of the housekeeping of Advices and Advisors, but doesn't actually implement proxy creation methods, which are provided by subclasses.

This class is serializable; subclasses need not be. This class is used to hold snapshots of proxies.

See Also

Summary

Fields
public static final TargetSource EMPTY_TARGET_SOURCE Canonical TargetSource when there's no target, and behavior is supplied by the advisors.
Public Constructors
AdvisedSupport()
No-arg constructor for use as a JavaBean.
AdvisedSupport(Class[] interfaces)
Create a AdvisedSupport instance with the given parameters.
Public Methods
void addAdvice(int pos, Advice advice)
Cannot add introductions this way unless the advice implements IntroductionInfo.
void addAdvice(Advice advice)
Add the given AOP Alliance advice to the tail of the advice (interceptor) chain.
void addAdvisor(Advisor advisor)
Add an advisor at the end of the advisor chain.
void addAdvisor(int pos, Advisor advisor)
Add an Advisor at the specified position in the chain.
void addAdvisors(Advisor... advisors)
Add all of the given advisors to this proxy configuration.
void addAdvisors(Collection<Advisor> advisors)
Add all of the given advisors to this proxy configuration.
void addAllAdvisors(Advisor[] advisors)
This method is deprecated. as of Spring 3.0, in favor of addAdvisors(Collection)
void addInterface(Class intf)
Add a new proxied interface.
boolean adviceIncluded(Advice advice)
Is the given advice included in any advisor within this proxy configuration?
int countAdvicesOfType(Class adviceClass)
Count advices of the given class.
AdvisorChainFactory getAdvisorChainFactory()
Return the advisor chain factory to use (never null).
final Advisor[] getAdvisors()
Return the advisors applying to this proxy.
List<Object> getInterceptorsAndDynamicInterceptionAdvice(Method method, Class targetClass)
Determine a list of org.aopalliance.intercept.MethodInterceptor objects for the given method, based on this configuration.
Class[] getProxiedInterfaces()
Return the interfaces proxied by the AOP proxy.
Class<?> getTargetClass()
Return the target class behind the implementing object (typically a proxy configuration or an actual proxy).
TargetSource getTargetSource()
Return the TargetSource used by this Advised object.
int indexOf(Advisor advisor)
Return the index (from 0) of the given advisor, or -1 if no such advisor applies to this proxy.
int indexOf(Advice advice)
Return the index (from 0) of the given AOP Alliance Advice, or -1 if no such advice is an advice for this proxy.
boolean isInterfaceProxied(Class intf)
Determine whether the given interface is proxied.
boolean isPreFiltered()
Return whether this proxy configuration is pre-filtered so that it only contains applicable advisors (matching this proxy's target class).
boolean removeAdvice(Advice advice)
Remove the Advisor containing the given advice.
void removeAdvisor(int index)
Remove the advisor at the given index.
boolean removeAdvisor(Advisor advisor)
Remove the given advisor.
boolean removeInterface(Class intf)
Remove a proxied interface.
boolean replaceAdvisor(Advisor a, Advisor b)
Replace the given advisor.
void setAdvisorChainFactory(AdvisorChainFactory advisorChainFactory)
Set the advisor chain factory to use.
void setInterfaces(Class[] interfaces)
Set the interfaces to be proxied.
void setPreFiltered(boolean preFiltered)
Set whether this proxy configuration is pre-filtered so that it only contains applicable advisors (matching this proxy's target class).
void setTarget(Object target)
Set the given object as target.
void setTargetClass(Class targetClass)
Set a target class to be proxied, indicating that the proxy should be castable to the given class.
void setTargetSource(TargetSource targetSource)
Change the TargetSource used by this Advised object.
String toProxyConfigString()
As toString() will normally be delegated to the target, this returns the equivalent for the AOP proxy.
String toString()
For debugging/diagnostic use.
Protected Methods
void adviceChanged()
Invoked when advice has changed.
void copyConfigurationFrom(AdvisedSupport other, TargetSource targetSource, List<Advisor> advisors)
Copy the AOP configuration from the given AdvisedSupport object, but allow substitution of a fresh TargetSource and a given interceptor chain.
void copyConfigurationFrom(AdvisedSupport other)
Call this method on a new instance created by the no-arg constructor to create an independent copy of the configuration from the given object.
final List<Advisor> getAdvisorsInternal()
Allows uncontrolled access to the List of Advisors.
final void updateAdvisorArray()
Bring the array up to date with the list.
[Expand]
Inherited Methods
From class org.springframework.aop.framework.ProxyConfig
From class java.lang.Object
From interface org.springframework.aop.TargetClassAware
From interface org.springframework.aop.framework.Advised

Fields

public static final TargetSource EMPTY_TARGET_SOURCE

Canonical TargetSource when there's no target, and behavior is supplied by the advisors.

Public Constructors

public AdvisedSupport ()

No-arg constructor for use as a JavaBean.

public AdvisedSupport (Class[] interfaces)

Create a AdvisedSupport instance with the given parameters.

Parameters
interfaces the proxied interfaces

Public Methods

public void addAdvice (int pos, Advice advice)

Cannot add introductions this way unless the advice implements IntroductionInfo.

Parameters
pos index from 0 (head)
advice advice to add at the specified position in the advice chain

public void addAdvice (Advice advice)

Add the given AOP Alliance advice to the tail of the advice (interceptor) chain.

This will be wrapped in a DefaultPointcutAdvisor with a pointcut that always applies, and returned from the getAdvisors() method in this wrapped form.

Note that the given advice will apply to all invocations on the proxy, even to the toString() method! Use appropriate advice implementations or specify appropriate pointcuts to apply to a narrower set of methods.

Parameters
advice advice to add to the tail of the chain

public void addAdvisor (Advisor advisor)

Add an advisor at the end of the advisor chain.

The Advisor may be an IntroductionAdvisor, in which new interfaces will be available when a proxy is next obtained from the relevant factory.

Parameters
advisor the advisor to add to the end of the chain

public void addAdvisor (int pos, Advisor advisor)

Add an Advisor at the specified position in the chain.

Parameters
pos position in chain (0 is head). Must be valid.
advisor the advisor to add at the specified position in the chain

public void addAdvisors (Advisor... advisors)

Add all of the given advisors to this proxy configuration.

Parameters
advisors the advisors to register

public void addAdvisors (Collection<Advisor> advisors)

Add all of the given advisors to this proxy configuration.

Parameters
advisors the advisors to register

public void addAllAdvisors (Advisor[] advisors)

This method is deprecated.
as of Spring 3.0, in favor of addAdvisors(Collection)

Add all of the given advisors to this proxy configuration.

Parameters
advisors the advisors to register

public void addInterface (Class intf)

Add a new proxied interface.

Parameters
intf the additional interface to proxy

public boolean adviceIncluded (Advice advice)

Is the given advice included in any advisor within this proxy configuration?

Parameters
advice the advice to check inclusion of
Returns
  • whether this advice instance is included

public int countAdvicesOfType (Class adviceClass)

Count advices of the given class.

Parameters
adviceClass the advice class to check
Returns
  • the count of the interceptors of this class or subclasses

public AdvisorChainFactory getAdvisorChainFactory ()

Return the advisor chain factory to use (never null).

public final Advisor[] getAdvisors ()

Return the advisors applying to this proxy.

Returns
  • a list of Advisors applying to this proxy (never null)

public List<Object> getInterceptorsAndDynamicInterceptionAdvice (Method method, Class targetClass)

Determine a list of org.aopalliance.intercept.MethodInterceptor objects for the given method, based on this configuration.

Parameters
method the proxied method
targetClass the target class
Returns
  • List of MethodInterceptors (may also include InterceptorAndDynamicMethodMatchers)

public Class[] getProxiedInterfaces ()

Return the interfaces proxied by the AOP proxy. Will not include the target class, which may also be proxied.

public Class<?> getTargetClass ()

Return the target class behind the implementing object (typically a proxy configuration or an actual proxy).

Returns
  • the target Class, or null if not known

public TargetSource getTargetSource ()

Return the TargetSource used by this Advised object.

public int indexOf (Advisor advisor)

Return the index (from 0) of the given advisor, or -1 if no such advisor applies to this proxy.

The return value of this method can be used to index into the advisors array.

Parameters
advisor the advisor to search for
Returns
  • index from 0 of this advisor, or -1 if there's no such advisor

public int indexOf (Advice advice)

Return the index (from 0) of the given AOP Alliance Advice, or -1 if no such advice is an advice for this proxy.

The return value of this method can be used to index into the advisors array.

Parameters
advice AOP Alliance advice to search for
Returns
  • index from 0 of this advice, or -1 if there's no such advice

public boolean isInterfaceProxied (Class intf)

Determine whether the given interface is proxied.

Parameters
intf the interface to check

public boolean isPreFiltered ()

Return whether this proxy configuration is pre-filtered so that it only contains applicable advisors (matching this proxy's target class).

public boolean removeAdvice (Advice advice)

Remove the Advisor containing the given advice.

Parameters
advice the advice to remove
Returns
  • true of the advice was found and removed; false if there was no such advice

public void removeAdvisor (int index)

Remove the advisor at the given index.

Parameters
index index of advisor to remove

public boolean removeAdvisor (Advisor advisor)

Remove the given advisor.

Parameters
advisor the advisor to remove
Returns
  • true if the advisor was removed; false if the advisor was not found and hence could not be removed

public boolean removeInterface (Class intf)

Remove a proxied interface.

Does nothing if the given interface isn't proxied.

Parameters
intf the interface to remove from the proxy
Returns
  • true if the interface was removed; false if the interface was not found and hence could not be removed

public boolean replaceAdvisor (Advisor a, Advisor b)

Replace the given advisor.

Note: If the advisor is an IntroductionAdvisor and the replacement is not or implements different interfaces, the proxy will need to be re-obtained or the old interfaces won't be supported and the new interface won't be implemented.

Parameters
a the advisor to replace
b the advisor to replace it with
Returns
  • whether it was replaced. If the advisor wasn't found in the list of advisors, this method returns false and does nothing.

public void setAdvisorChainFactory (AdvisorChainFactory advisorChainFactory)

Set the advisor chain factory to use.

Default is a DefaultAdvisorChainFactory.

public void setInterfaces (Class[] interfaces)

Set the interfaces to be proxied.

public void setPreFiltered (boolean preFiltered)

Set whether this proxy configuration is pre-filtered so that it only contains applicable advisors (matching this proxy's target class).

Default is "false". Set this to "true" if the advisors have been pre-filtered already, meaning that the ClassFilter check can be skipped when building the actual advisor chain for proxy invocations.

public void setTarget (Object target)

Set the given object as target. Will create a SingletonTargetSource for the object.

public void setTargetClass (Class targetClass)

Set a target class to be proxied, indicating that the proxy should be castable to the given class.

Internally, an EmptyTargetSource for the given target class will be used. The kind of proxy needed will be determined on actual creation of the proxy.

This is a replacement for setting a "targetSource" or "target", for the case where we want a proxy based on a target class (which can be an interface or a concrete class) without having a fully capable TargetSource available.

public void setTargetSource (TargetSource targetSource)

Change the TargetSource used by this Advised object. Only works if the configuration isn't frozen.

Parameters
targetSource new TargetSource to use

public String toProxyConfigString ()

As toString() will normally be delegated to the target, this returns the equivalent for the AOP proxy.

Returns
  • a string description of the proxy configuration

public String toString ()

For debugging/diagnostic use.

Protected Methods

protected void adviceChanged ()

Invoked when advice has changed.

protected void copyConfigurationFrom (AdvisedSupport other, TargetSource targetSource, List<Advisor> advisors)

Copy the AOP configuration from the given AdvisedSupport object, but allow substitution of a fresh TargetSource and a given interceptor chain.

Parameters
other the AdvisedSupport object to take proxy configuration from
targetSource the new TargetSource
advisors the Advisors for the chain

protected void copyConfigurationFrom (AdvisedSupport other)

Call this method on a new instance created by the no-arg constructor to create an independent copy of the configuration from the given object.

Parameters
other the AdvisedSupport object to copy configuration from

protected final List<Advisor> getAdvisorsInternal ()

Allows uncontrolled access to the List of Advisors.

Use with care, and remember to refresh the advisor array and fire advice changed events when making any modifications.

protected final void updateAdvisorArray ()

Bring the array up to date with the list.