Package org.springframework.context.weaving

# Class DefaultContextLoadTimeWeaver

java.lang.Object
org.springframework.context.weaving.DefaultContextLoadTimeWeaver

All Implemented Interfaces:
  `org.springframework.beans.factory.Aware`, `org.springframework.beans.factory.BeanClassLoaderAware`, `org.springframework.beans.factory.DisposableBean`, `LoadTimeWeaver`

public class DefaultContextLoadTimeWeaver extends Object implements LoadTimeWeaver, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.DisposableBean
Default `LoadTimeWeaver` bean for use in an application context, decorating an automatically detected internal `LoadTimeWeaver`.

Typically registered for the default bean name "`loadTimeWeaver`"; the most convenient way to achieve this is Spring's `<context:load-time-weaver>` XML tag or `@EnableLoadTimeWeaving` on a `@Configuration` class.

This class implements a runtime environment check for obtaining the appropriate weaver implementation, including `Spring's VM agent` and any `ClassLoader` supported by Spring's `ReflectiveLoadTimeWeaver`.

Since:
  2.5
Author:
  Juergen Hoeller, Ramnivas Laddad, Costin Leau
See Also:
  - `ConfigurableApplicationContext.LOAD_TIME_WEAVER_BEAN_NAME`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final org.apache.commons.logging.Log`
`logger`

## Constructor Summary

Constructors
Constructor
Description
`DefaultContextLoadTimeWeaver()`
`DefaultContextLoadTimeWeaver(ClassLoader beanClassLoader)`

## Method Summary

Modifier and Type
Method
Description
`void`
`addTransformer(ClassFileTransformer transformer)`
Add a `ClassFileTransformer` to be applied by this `LoadTimeWeaver`.
`protected LoadTimeWeaver`
`createServerSpecificLoadTimeWeaver(ClassLoader classLoader)`
`void`
`destroy()`
`ClassLoader`
`getInstrumentableClassLoader()`
Return a `ClassLoader` that supports instrumentation through AspectJ-style load-time weaving based on user-defined `ClassFileTransformers`.
`ClassLoader`
`getThrowawayClassLoader()`
Return a throwaway `ClassLoader`, enabling classes to be loaded and inspected without affecting the parent `ClassLoader`.
`void`
`setBeanClassLoader(ClassLoader classLoader)`

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

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

## Field Details

### logger

protected final org.apache.commons.logging.Log logger

## Constructor Details

### DefaultContextLoadTimeWeaver

public DefaultContextLoadTimeWeaver()

### DefaultContextLoadTimeWeaver

public DefaultContextLoadTimeWeaver(ClassLoader beanClassLoader)

## Method Details

### setBeanClassLoader

public void setBeanClassLoader(ClassLoader classLoader)

Specified by:
  `setBeanClassLoader` in interface `org.springframework.beans.factory.BeanClassLoaderAware`

### createServerSpecificLoadTimeWeaver

@Nullable protected LoadTimeWeaver createServerSpecificLoadTimeWeaver(ClassLoader classLoader)

### destroy

public void destroy()

Specified by:
  `destroy` in interface `org.springframework.beans.factory.DisposableBean`

### addTransformer

public void addTransformer(ClassFileTransformer transformer)
Description copied from interface: `LoadTimeWeaver`
Add a `ClassFileTransformer` to be applied by this `LoadTimeWeaver`.

Specified by:
  `addTransformer` in interface `LoadTimeWeaver`
Parameters:
  `transformer` - the `ClassFileTransformer` to add

### getInstrumentableClassLoader

public ClassLoader getInstrumentableClassLoader()
Description copied from interface: `LoadTimeWeaver`
Return a `ClassLoader` that supports instrumentation through AspectJ-style load-time weaving based on user-defined `ClassFileTransformers`.

May be the current `ClassLoader`, or a `ClassLoader` created by this `LoadTimeWeaver` instance.

Specified by:
  `getInstrumentableClassLoader` in interface `LoadTimeWeaver`
Returns:
  the `ClassLoader` which will expose instrumented classes according to the registered transformers

### getThrowawayClassLoader

public ClassLoader getThrowawayClassLoader()
Description copied from interface: `LoadTimeWeaver`
Return a throwaway `ClassLoader`, enabling classes to be loaded and inspected without affecting the parent `ClassLoader`.

Should not return the same instance of the `ClassLoader` returned from an invocation of `LoadTimeWeaver.getInstrumentableClassLoader()`.

Specified by:
  `getThrowawayClassLoader` in interface `LoadTimeWeaver`
Returns:
  a temporary throwaway `ClassLoader`; should return a new instance for each call, with no existing state