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
InstrumentationSavingAgent
Constructor and Description |
---|
InstrumentationLoadTimeWeaver()
Create a new InstrumentationLoadTimeWeaver for the default ClassLoader.
|
InstrumentationLoadTimeWeaver(ClassLoader classLoader)
Create a new InstrumentationLoadTimeWeaver for the given ClassLoader.
|
Modifier and Type | Method and Description |
---|---|
void |
addTransformer(ClassFileTransformer transformer)
Add a
ClassFileTransformer to be applied by this
LoadTimeWeaver . |
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.
|
ClassLoader |
getThrowawayClassLoader()
This implementation always returns a
SimpleThrowawayClassLoader . |
static boolean |
isInstrumentationAvailable()
Check whether an Instrumentation instance is available for the current VM.
|
void |
removeTransformers()
Remove all registered transformers, in inverse order of registration.
|
public InstrumentationLoadTimeWeaver()
public InstrumentationLoadTimeWeaver(@Nullable ClassLoader classLoader)
classLoader
- the ClassLoader that registered transformers are supposed to apply topublic void addTransformer(ClassFileTransformer transformer)
LoadTimeWeaver
ClassFileTransformer
to be applied by this
LoadTimeWeaver
.addTransformer
in interface LoadTimeWeaver
transformer
- the ClassFileTransformer
to addpublic ClassLoader getInstrumentableClassLoader()
getInstrumentableClassLoader
in interface LoadTimeWeaver
ClassLoader
which will expose
instrumented classes according to the registered transformerspublic ClassLoader getThrowawayClassLoader()
SimpleThrowawayClassLoader
.getThrowawayClassLoader
in interface LoadTimeWeaver
ClassLoader
; should return
a new instance for each call, with no existing statepublic void removeTransformers()
public static boolean isInstrumentationAvailable()
getInstrumentation()