Como otros ya han respondido, simplemente puede usar @Inject Injector porque Guice define el enlace en sí.
Normalmente solo necesita un inyector en su aplicación, y una variable estática es una forma aún más fácil de almacenar y acceder a un singleton que inyectarlo. En nuestra aplicación web, usamos stripes-guicer y obtenemos el inyector de su método estático GuiceInjectorFactory.getInjector() cuando lo necesitamos (en nuestro interceptor de Hibernate, por ejemplo).
Estoy un poco desconcertado por el consejo de que "no deberías usar Injector directamente". ¿De qué otro modo podría obtener una instancia inyectada excepto llamando a injector.getInstance() o injector.injectMembers()? No hay forma. Sí, puede definir métodos de Proveedor, pero nunca se llamarán a menos que estén en algún lugar, algo usa un Inyector. Sí, hay módulos que usan el Inyector como el ServletModule; usted tiene que crear el inyector usted mismo, pero luego puede dejarlo en el ServletModule.
Por lo tanto, en algunas circunstancias puede evitar el uso directo del inyector, pero eso no significa que "no debería" usarlo. Si está utilizando Guice solo sin ningún módulo opcional, entonces "debería" estar usando un inyector en todas partes porque no hay otra forma de activar la inyección. (Creo que los desarrolladores que pasan todo el día escribiendo código dentro de frameworks a veces se olvidan de que algunas personas crean sus propios objetos).
Thx! Lo intentaré para la inicialización perezosa. Pero, ¿realmente no hay forma de inyectar Injector? –
Puede obtener el inyector con '@Inject Injector Injector', puede estar en el constructor/campo/método. – gpampara
¿Has probado esto? ¿Cómo configurar el módulo? Guice restringe el enlace a las clases principales: "No se permite el enlace con el tipo de marco de control central: Inyector". –