Package org.springframework.aop.framework

# Class ProxyFactory

java.lang.Object
org.springframework.aop.framework.ProxyConfig
org.springframework.aop.framework.AdvisedSupport
org.springframework.aop.framework.ProxyCreatorSupport
org.springframework.aop.framework.ProxyFactory

All Implemented Interfaces:
  `Serializable`, `Advised`, `TargetClassAware`

public class ProxyFactory extends ProxyCreatorSupport
Factory for AOP proxies for programmatic use, rather than via declarative setup in a bean factory. This class provides a simple way of obtaining and configuring AOP proxy instances in custom user code.

Since:
  14.03.2003
Author:
  Rod Johnson, Juergen Hoeller, Rob Harrop
See Also:
  - Serialized Form

## Field Summary

### Fields inherited from class org.springframework.aop.framework.AdvisedSupport

`EMPTY_TARGET_SOURCE`

## Constructor Summary

Constructors
Constructor
Description
`ProxyFactory()`
Create a new ProxyFactory.
`ProxyFactory(Class<?>... proxyInterfaces)`
Create a new ProxyFactory.
`ProxyFactory(Class<?> proxyInterface, Interceptor interceptor)`
Create a new ProxyFactory for the given interface and interceptor.
`ProxyFactory(Class<?> proxyInterface, TargetSource targetSource)`
Create a ProxyFactory for the specified `TargetSource`, making the proxy implement the specified interface.
`ProxyFactory(Object target)`
Create a new ProxyFactory.

## Method Summary

Modifier and Type
Method
Description
`Object`
`getProxy()`
Create a new proxy according to the settings in this factory.
`static <T> T`
`getProxy(Class<T> proxyInterface, Interceptor interceptor)`
Create a new proxy for the given interface and interceptor.
`static <T> T`
`getProxy(Class<T> proxyInterface, TargetSource targetSource)`
Create a proxy for the specified `TargetSource`, implementing the specified interface.
`Object`
`getProxy(ClassLoader classLoader)`
Create a new proxy according to the settings in this factory.
`static Object`
`getProxy(TargetSource targetSource)`
Create a proxy for the specified `TargetSource` that extends the target class of the `TargetSource`.
`Class<?>`
`getProxyClass(ClassLoader classLoader)`
Determine the proxy class according to the settings in this factory.

### Methods inherited from class org.springframework.aop.framework.ProxyCreatorSupport

`addListener, adviceChanged, createAopProxy, getAopProxyFactory, isActive, removeListener, setAopProxyFactory`

### Methods inherited from class org.springframework.aop.framework.AdvisedSupport

`addAdvice, addAdvice, addAdvisor, addAdvisor, addAdvisors, addAdvisors, addInterface, adviceIncluded, copyConfigurationFrom, copyConfigurationFrom, countAdvicesOfType, getAdvisorChainFactory, getAdvisorCount, getAdvisors, getAdvisorsInternal, getInterceptorsAndDynamicInterceptionAdvice, getProxiedInterfaces, getTargetClass, getTargetSource, indexOf, indexOf, isInterfaceProxied, isPreFiltered, removeAdvice, removeAdvisor, removeAdvisor, removeInterface, replaceAdvisor, setAdvisorChainFactory, setInterfaces, setPreFiltered, setTarget, setTargetClass, setTargetSource, toProxyConfigString, toString`

### Methods inherited from class org.springframework.aop.framework.ProxyConfig

`copyFrom, isExposeProxy, isFrozen, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setFrozen, setOpaque, setOptimize, setProxyTargetClass`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.springframework.aop.framework.Advised

`isExposeProxy, isFrozen, isProxyTargetClass, setExposeProxy`

## Constructor Details

### ProxyFactory

public ProxyFactory()
Create a new ProxyFactory.

### ProxyFactory

public ProxyFactory(Object target)
Create a new ProxyFactory.

Will proxy all interfaces that the given target implements.

Parameters:
  `target` - the target object to be proxied

### ProxyFactory

public ProxyFactory(Class<?>... proxyInterfaces)
Create a new ProxyFactory.

No target, only interfaces. Must add interceptors.

Parameters:
  `proxyInterfaces` - the interfaces that the proxy should implement

### ProxyFactory

public ProxyFactory(Class<?> proxyInterface, Interceptor interceptor)
Create a new ProxyFactory for the given interface and interceptor.

Convenience method for creating a proxy for a single interceptor, assuming that the interceptor handles all calls itself rather than delegating to a target, like in the case of remoting proxies.

Parameters:
  `proxyInterface` - the interface that the proxy should implement
  `interceptor` - the interceptor that the proxy should invoke

### ProxyFactory

public ProxyFactory(Class<?> proxyInterface, TargetSource targetSource)
Create a ProxyFactory for the specified `TargetSource`, making the proxy implement the specified interface.

Parameters:
  `proxyInterface` - the interface that the proxy should implement
  `targetSource` - the TargetSource that the proxy should invoke

## Method Details

### getProxy

public Object getProxy()
Create a new proxy according to the settings in this factory.

Can be called repeatedly. Effect will vary if we've added or removed interfaces. Can add and remove interceptors.

Uses a default class loader: Usually, the thread context class loader (if necessary for proxy creation).

Returns:
  the proxy object

### getProxy

public Object getProxy(@Nullable ClassLoader classLoader)
Create a new proxy according to the settings in this factory.

Can be called repeatedly. Effect will vary if we've added or removed interfaces. Can add and remove interceptors.

Uses the given class loader (if necessary for proxy creation).

Parameters:
  `classLoader` - the class loader to create the proxy with (or `null` for the low-level proxy facility's default)
Returns:
  the proxy object

### getProxyClass

public Class<?> getProxyClass(@Nullable ClassLoader classLoader)
Determine the proxy class according to the settings in this factory.

Parameters:
  `classLoader` - the class loader to create the proxy class with (or `null` for the low-level proxy facility's default)
Returns:
  the proxy class
Since:
  6.0

### getProxy

public static <T> T getProxy(Class<T> proxyInterface, Interceptor interceptor)
Create a new proxy for the given interface and interceptor.

Convenience method for creating a proxy for a single interceptor, assuming that the interceptor handles all calls itself rather than delegating to a target, like in the case of remoting proxies.

Parameters:
  `proxyInterface` - the interface that the proxy should implement
  `interceptor` - the interceptor that the proxy should invoke
Returns:
  the proxy object
See Also:
  - `ProxyFactory(Class, org.aopalliance.intercept.Interceptor)`

### getProxy

public static <T> T getProxy(Class<T> proxyInterface, TargetSource targetSource)
Create a proxy for the specified `TargetSource`, implementing the specified interface.

Parameters:
  `proxyInterface` - the interface that the proxy should implement
  `targetSource` - the TargetSource that the proxy should invoke
Returns:
  the proxy object
See Also:
  - `ProxyFactory(Class, org.springframework.aop.TargetSource)`

### getProxy

public static Object getProxy(TargetSource targetSource)
Create a proxy for the specified `TargetSource` that extends the target class of the `TargetSource`.

Parameters:
  `targetSource` - the TargetSource that the proxy should invoke
Returns:
  the proxy object