org.springframework.instrument.classloading

## Class SimpleInstrumentableClassLoader

- java.lang.Object
- - java.lang.ClassLoader
  - - org.springframework.core.DecoratingClassLoader
    - - org.springframework.core.OverridingClassLoader
      - - org.springframework.instrument.classloading.SimpleInstrumentableClassLoader

    public class SimpleInstrumentableClassLoader
    extends OverridingClassLoader

Simplistic implementation of an instrumentable `ClassLoader`.

Usable in tests and standalone environments.

Since:
  2.0
Author:
  Rod Johnson, Costin Leau

### Field Summary

### Fields inherited from class org.springframework.core.OverridingClassLoader

`DEFAULT_EXCLUDED_PACKAGES`

### Constructor Summary

Constructors
Constructor and Description
`SimpleInstrumentableClassLoader(ClassLoader parent)` Create a new `SimpleLoadTimeWeaver` for the given `ClassLoader`.

### Method Summary

Methods
`void` `addTransformer(ClassFileTransformer transformer)` Add a `ClassFileTransformer` to be applied by this `ClassLoader`.
`protected byte[]` `transformIfNecessary(String name, byte[] bytes)` Transformation hook to be implemented by subclasses.

### Methods inherited from class org.springframework.core.OverridingClassLoader

`isEligibleForOverriding, loadBytesForClass, loadClass, loadClassForOverriding, openStreamForClass`

### Methods inherited from class org.springframework.core.DecoratingClassLoader

`excludeClass, excludePackage, isExcluded`

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

`clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners`

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

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

### Constructor Detail

#### SimpleInstrumentableClassLoader

    public SimpleInstrumentableClassLoader(ClassLoader parent)

Create a new `SimpleLoadTimeWeaver` for the given `ClassLoader`.

Parameters:
  `parent` - the `ClassLoader` to build a simple instrumentable `ClassLoader` for

### Method Detail

#### addTransformer

    public void addTransformer(ClassFileTransformer transformer)

Add a `ClassFileTransformer` to be applied by this `ClassLoader`.

Parameters:
  `transformer` - the `ClassFileTransformer` to register

#### transformIfNecessary

    protected byte[] transformIfNecessary(String name,
                              byte[] bytes)

Description copied from class: `OverridingClassLoader`
Transformation hook to be implemented by subclasses.

The default implementation simply returns the given bytes as-is.

Overrides:
  `transformIfNecessary` in class `OverridingClassLoader`
Parameters:
  `name` - the fully-qualified name of the class being transformed
  `bytes` - the raw bytes of the class
Returns:
  the transformed bytes (never `null`; same as the input bytes if the transformation produced no changes)