我正在使用guice來注入我的依賴關係。我的IDE是IntelliJ 2017.2.5。當我運行下面的代碼時,我的main
方法繼續運行並且沒有停止。當我移除DI時,程序將以Process finished with exit code 0
停止。Guice Injector保持應用程序運行
與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");
}
}
的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();
}
}
}
如果我執行Test.main
一切順利,JPA正確初始化,我看到下面的輸出:
EM open
Done
出於某種原因,應用程序在此之後仍在運行。我必須手動終止應用程序。
我該如何解決這個問題?
解決了!謝謝! –