This project serves a little Java agent that removes the support for looking up Bean Customizer
s inside java.beans.Introspector
.
It does so by essentially making the internal findCustomizerClass
method a no-op and returning null.
This is inspired by the findings in Spring-Framework:
Where it was revealed that a reasonable amount of time is spent in Introspector
.
Especially on finding Customizer
classes that 99% of Spring applications don't have.
NOTE: This agent is not meant to run in production usages and I don't claim this is safe to use and only do so at your own risk.
Before using the agent, you need to build the agent and put it somewhere where you need it:
./gradlew build
Depending on your use-case you might need to put this in place then:
java -javaagent:/path/to/the/agent/remove-introspector-customizer-agent.jar ...
E.g. in Maven Surefire tests
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-javaagent:/path/to/the/agent/remove-introspector-customizer-agent.jar</argLine>
</configuration>
</plugin>
Or for Gradle tests
test {
jvmArgs '-javaagent:/path/to/the/agent/remove-introspector-customizer-agent.jar'
}
Happy experimenting with measuring eventual impacts.