From Guice's Wiki
Eager singletons reveal initialization problems sooner, and ensure end-users get a consistent, snappy experience. Lazy singletons enable a faster edit-compile-run development cycle. Use the Stage enum to specify which strategy should be used.
- Eager: "create an instance of this class when the Module is being run"
- Lazy: "create an instance of this class when it's first requested for dependency injection"