J'utilise guice pour injecter mes dépendances. Mon IDE est IntelliJ 2017.2.5. Lorsque j'exécute le code suivant, ma méthode main
continue à fonctionner et n'est pas arrêtée. Lorsque je retire le DI, le processus s'arrête avec Process finished with exit code 0
.Guice Injector maintient l'exécution de l'application
La classe avec la méthode main
:
public class Test {
@Inject
Provider<EntityManager> em;
public void test() {
if(em.get().isOpen())
System.out.println("EM open");
}
public static void main(String args[]) {
final Injector injector = createInjector(new DatabaseModule());
Test app = injector.getInstance(Test.class);
app.test();
System.out.println("Done");
}
}
Le DatabaseModule
:
public class DatabaseModule extends AbstractModule {
private static final String PU_NAME = "my_pu";
@Override
protected void configure() {
install(new JpaPersistModule(PU_NAME));
bind(JPAInitializer.class).asEagerSingleton();
}
@Singleton
private static class JPAInitializer {
@Inject
public JPAInitializer(final PersistService service) {
service.start();
}
}
}
Si j'exécute Test.main
tout va bien, JPA est initialisés correctement et je vois ce qui suit sortie:
EM open
Done
Pour une raison quelconque, l'application est toujours en cours d'exécution. Je dois terminer l'application manuellement.
Comment résoudre ce problème?
Résolu! Merci! –