Class InstrumentationLoadTimeWeaver

java.lang.Object
org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver
All Implemented Interfaces:
LoadTimeWeaver

public class InstrumentationLoadTimeWeaver extends Object implements LoadTimeWeaver
LoadTimeWeaver relying on VM Instrumentation.

Start the JVM specifying the Java agent to be used — for example, as follows where spring-instrument-{version}.jar is a JAR file containing the InstrumentationSavingAgent class shipped with Spring and where {version} is the release version of the Spring Framework (e.g., 5.1.5.RELEASE).

-javaagent:path/to/spring-instrument-{version}.jar

In Eclipse, for example, add something similar to the following to the JVM arguments for the Eclipse "Run configuration":

-javaagent:${project_loc}/lib/spring-instrument-{version}.jar

Since:
2.0
Author:
Rod Johnson, Juergen Hoeller
See Also:
  • Constructor Details

    • InstrumentationLoadTimeWeaver

      public InstrumentationLoadTimeWeaver()
      Create a new InstrumentationLoadTimeWeaver for the default ClassLoader.
    • InstrumentationLoadTimeWeaver

      public InstrumentationLoadTimeWeaver(@Nullable ClassLoader classLoader)
      Create a new InstrumentationLoadTimeWeaver for the given ClassLoader.
      Parameters:
      classLoader - the ClassLoader that registered transformers are supposed to apply to
  • Method Details

    • 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()
      We have the ability to weave the current class loader when starting the JVM in this way, so the instrumentable class loader will always be the current loader.
      Specified by:
      getInstrumentableClassLoader in interface LoadTimeWeaver
      Returns:
      the ClassLoader which will expose instrumented classes according to the registered transformers
    • getThrowawayClassLoader

      public ClassLoader getThrowawayClassLoader()
      This implementation always returns a SimpleThrowawayClassLoader.
      Specified by:
      getThrowawayClassLoader in interface LoadTimeWeaver
      Returns:
      a temporary throwaway ClassLoader; should return a new instance for each call, with no existing state
    • removeTransformers

      public void removeTransformers()
      Remove all registered transformers, in inverse order of registration.
    • isInstrumentationAvailable

      public static boolean isInstrumentationAvailable()
      Check whether an Instrumentation instance is available for the current VM.
      See Also:
      • getInstrumentation()