In case you have ever worked with performance critical applications you may have stumbled across the excellent framework Perf4J. Perf4J allows developers to easily profile methods when they are called and expose the data in multiple formats. We use Perf4J in almost all of our web applications so we can keep track of performance.

Perf4J also includes a nice to use annotation, @Profiled, which is designed to use Aspects (AOP) to provide profiling to the pointcuts without having to manually start and stop timers. On their site there is no documentation on how to integrate with Guice so I took a look at if it would be possible to integrate Perf4J AOP with Guice AOP capabilities. Read on for how this can be done.