org.springframework.aop.framework
Class JdkDynamicAopProxy

java.lang.Object
  extended byorg.springframework.aop.framework.JdkDynamicAopProxy
All Implemented Interfaces:
AopProxy, InvocationHandler, Serializable

final class JdkDynamicAopProxy
extends Object
implements AopProxy, InvocationHandler, Serializable

InvocationHandler implementation for the Spring AOP framework, based on J2SE 1.3+ dynamic proxies.

Creates a J2SE proxy, implementing the interfaces exposed by the proxy. Dynamic proxies cannot be used to proxy methods defined in classes, rather than interface.

Objects of this type should be obtained through proxy factories, configured by an AdvisedSupport class. This class is internal to the Spring framework and need not be used directly by client code.

Proxies created using this class will be threadsafe if the underlying (target) class is threadsafe.

Proxies are serializable so long as all Advisors are serializable (meaning both Advices and Pointcuts) and the TargetSource is serializable.

Author:
Rod Johnson, Juergen Hoeller
See Also:
Proxy, AdvisedSupport, ProxyFactory

Constructor Summary
protected JdkDynamicAopProxy(AdvisedSupport config)
          Construct a new JDK proxy.
 
Method Summary
 boolean equals(Object other)
          Equality means interfaces, advisors and TargetSource are equal.
 Object getProxy()
          Create a new Proxy object for the given object.
 Object getProxy(ClassLoader classLoader)
          Create a new Proxy object for the given object.
 int hashCode()
          Proxy uses the hash code of the TargetSource.
 Object invoke(Object proxy, Method method, Object[] args)
          Implementation of InvocationHandler.invoke.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JdkDynamicAopProxy

protected JdkDynamicAopProxy(AdvisedSupport config)
                      throws AopConfigException
Construct a new JDK proxy.

Throws:
AopConfigException - if the config is invalid. We try to throw an informative exception in this case, rather than let a mysterious failure happen later.
Method Detail

getProxy

public Object getProxy()
Description copied from interface: AopProxy
Create a new Proxy object for the given object. Uses the thread context class loader (if necessary for proxy creation).

Specified by:
getProxy in interface AopProxy
See Also:
Thread.getContextClassLoader()

getProxy

public Object getProxy(ClassLoader classLoader)
Description copied from interface: AopProxy
Create a new Proxy object for the given object. Uses the given class loader (if necessary for proxy creation).

Specified by:
getProxy in interface AopProxy
Parameters:
classLoader - the class loader to use

invoke

public Object invoke(Object proxy,
                     Method method,
                     Object[] args)
              throws Throwable
Implementation of InvocationHandler.invoke. Callers will see exactly the exception thrown by the target, unless a hook method throws an exception.

Specified by:
invoke in interface InvocationHandler
Throws:
Throwable

hashCode

public int hashCode()
Proxy uses the hash code of the TargetSource.


equals

public boolean equals(Object other)
Equality means interfaces, advisors and TargetSource are equal.

Parameters:
other - may be a dynamic proxy wrapping an instance of this class
See Also:
Object.equals(java.lang.Object)


Copyright (C) 2003-2004 The Spring Framework Project.