## 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
`SimpleInstrumentableClassLoader(ClassLoader parent)` Create a new `SimpleLoadTimeWeaver` for the given `ClassLoader`.

Method Summary
`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, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, 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)